作者QQ:1095737364    QQ群:123300273     欢迎加入!

1.添加依赖包

 <dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.41</version>
</dependency>

2.代码

package com.yys.common.util;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.serializer.JSONLibDataFormatSerializer;
import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.sun.tools.doclets.formats.html.SourceToHTMLConverter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; /**
* User: 杨永生
* Date: 9:24 2017/9/6
* Email: kevin@hiibook.com
*/
public class FastJsonUtils {
private final static Logger logger = LoggerFactory.getLogger(FastJsonUtils.class);
private static SerializeConfig config; static {
config = new SerializeConfig();
config.put(java.util.Date.class, new JSONLibDataFormatSerializer()); // 使用和json-lib兼容的日期输出格式
config.put(java.sql.Date.class, new JSONLibDataFormatSerializer()); // 使用和json-lib兼容的日期输出格式
} private static final SerializerFeature[] features = {
SerializerFeature.DisableCircularReferenceDetect,//打开循环引用检测,JSONField(serialize = false)不循环
SerializerFeature.WriteDateUseDateFormat,//默认使用系统默认 格式日期格式化
SerializerFeature.WriteMapNullValue, //输出空置字段
SerializerFeature.WriteNullListAsEmpty,//list字段如果为null,输出为[],而不是null
SerializerFeature.WriteNullNumberAsZero,// 数值字段如果为null,输出为0,而不是null
SerializerFeature.WriteNullBooleanAsFalse,//Boolean字段如果为null,输出为false,而不是null
SerializerFeature.WriteNullStringAsEmpty//字符类型字段如果为null,输出为"",而不是null
}; /**
* 返回Json字符串里面包含的一个对象
*
* @param jsonStr :{"city":"china","map1":[{"age":"28","name":"yys"}]}
* @param list_str :map1
* @param clazz :Map.class,或者其他对象
* @param <T> :Map
* @return :List<Map>
*/
public static final <T> List<T> json2childList(String jsonStr, String list_str,
Class<T> clazz) {
JSONObject jsonobj = JSON.parseObject(jsonStr);
if (jsonobj == null) {
return null;
}
Object obj = jsonobj.get(list_str);
if (obj == null) {
return null;
}
if (obj instanceof JSONArray) {
JSONArray jsonarr = (JSONArray) obj;
List<T> list = new ArrayList<T>();
for (int i = 0; i < jsonarr.size(); i++) {
list.add(jsonarr.getObject(i, clazz));
}
return list;
}
return null;
} /**
* 返回Json字符串里面包含的一个对象
*
* @param jsonStr :{"department":{"id":"1","name":"生产部"},"password":"admin","username":"admin"}
* @param obj_str :department
* @param clazz :Map.class,或者其他对象
* @param <T> :Map
* @return
*/
public static final <T> T json2childObj(String jsonStr, String obj_str,
Class<T> clazz) {
JSONObject jsonobj = JSON.parseObject(jsonStr);
if (jsonobj == null) {
return null;
} Object obj = jsonobj.get(obj_str);
if (obj == null) {
return null;
} if (obj instanceof JSONObject) {
return jsonobj.getObject(obj_str, clazz);
} else {
logger.info(obj.getClass() + "");
} return null;
} /**
* json 转换成对象
*
* @param jsonStr
* @param clazz
* @param <T>
* @return
*/
public static final <T> T json2obj(String jsonStr, Class<T> clazz) {
T t = null;
try {
t = JSON.parseObject(jsonStr, clazz);
} catch (Exception e) {
logger.error("json字符串转换失败!" + jsonStr, e);
}
return t;
} /**
* 对象转换成json字符串(带有格式化输出)
*
* @param object 要转换的对象
* @param prettyFormat 是否格式化json字符串,输出带有换行和缩进的字符串
* @return 返回一个json 字符串数组
*/
public static final String obj2json(Object object, boolean prettyFormat) {
return JSON.toJSONString(object, prettyFormat);
} /**
* 对象转换成json字符串
*
* @param object 要转换的对象
* @return 返回一个json 字符串数组
*/
public static final String obj2jsonByFeatures(Object object) {
return JSON.toJSONString(object,config,features);
}
/**
* 对象转换成json字符串
*
* @param object 要转换的对象
* @return 返回一个json 字符串数组
*/
public static final String obj2json(Object object) {
return JSON.toJSONString(object,config);
} /**
* json 字符串转换成原始的Object对象
*
* @param jsonStr
* @return
*/
public static final Object json2obj(String jsonStr) {
return JSON.parse(jsonStr);
} /**
* json字符串转换成list
*
* @param jsonStr Json字符串
* @param clazz 要转换的class
* @param <T>返回的泛型类型
* @return 返回的<T>泛型类型
*/
public static <T> List<T> json2List(String jsonStr, Class<T> clazz) {
List<T> list = new ArrayList<T>();
try {
list = JSON.parseArray(jsonStr, clazz);
} catch (Exception e) {
logger.error("json字符串转List失败!" + jsonStr, e);
}
return list;
} /**
* json字符串转换成Map
*
* @param jsonStr Json字符串
* @return Map
*/
public static Map<String, Object> json2Map(String jsonStr) {
try {
return JSON.parseObject(jsonStr, Map.class);
} catch (Exception e) {
logger.error("json字符串转换失败!" + jsonStr, e);
}
return null;
} /**
* json 转换成list<map>
*
* @param jsonString
* @return
*/
public static List<Map<String, Object>> json2ListkeyMap(String jsonString) {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
try {
list = JSON.parseObject(jsonString,
new TypeReference<List<Map<String, Object>>>() {
});
} catch (Exception e) {
logger.error("json字符串转map失败", e);
}
return list;
} }

JSON 解析工具的封装(FastJSON-->Java)的更多相关文章

  1. JSON 解析工具的封装(Java)

    JSON 解析工具的封装(Java) 一直想有一个属于自己的JSON工具,今天终于弄好了..... 1.添加pom依赖包 <!--json解析--> <dependency> ...

  2. java后台常用json解析工具问题小结

    若排版紊乱可查看我的个人博客原文地址 java后台常用json解析工具问题小结 这里不细究造成这些问题的底层原因,只是单纯的描述我碰到的问题及对应的解决方法 jackson将java对象转json字符 ...

  3. JSON解析工具比较,主要GSON和FastJSON

    JSON解析工具比较,主要GSON和FastJSON 一 .各个JSON技术的简介和优劣 1.json-lib json-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确 ...

  4. [转] 各种Json解析工具比较 - json-lib/Jackson/Gson/FastJson

    JSON技术的调研报告 一 .各个JSON技术的简介和优劣1.json-libjson-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包,包括com ...

  5. Java:JSON解析工具-org.json

    一.简介 org.json是Java常用的Json解析工具,主要提供JSONObject和JSONArray类,现在就各个类的使用解释如下. 二.准备 1.在使用org.json之前,我们应该先从该网 ...

  6. 自定义Json解析工具

    此博客为博主原创文章,转载请标明出处,维权必究:https://www.cnblogs.com/tangZH/p/10689536.html fastjson是很好用的json解析工具,只可惜项目中要 ...

  7. Json解析工具Jackson(使用注解)

    原文http://blog.csdn.net/nomousewch/article/details/8955796 接上一篇文章Json解析工具Jackson(简单应用),jackson在实际应用中给 ...

  8. Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例

    Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的 ...

  9. JSON解析工具-org.json使用教程

    转自:http://www.open-open.com/lib/view/open1381566882614.html 一.简介  org.json是Java常用的Json解析工具,主要提供JSONO ...

随机推荐

  1. Dubbo实现原理之基于SPI思想实现Dubbo内核

    dubbo中SPI接口的定义如下: @Documented @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE}) public ...

  2. jspm 简介

    借鉴:http://www.jianshu.com/p/4aba847b3e8c 功能 1. 支持加载JavaScript各种模块化的写法:AMD.CommonJS.标准化的ES6模块... 2. 包 ...

  3. MySQL查询50例

    创建表和关系 /* 创建表 */ /*年级表*/ DROP TABLE IF EXISTS `class_grade`; CREATE TABLE `class_grade` ( `gid` int( ...

  4. 利用Makefile安装helloworld模块(速成)

    这学期对了一门操作系统,满怀着好奇装了虚拟机然后安了Ubuntu,这周作业是编译内核和安装个模块,妈耶,折腾了我一两天.终于弄完,CSDN上有挺多类似的教程,例如陈皓的跟我一起写Makefile,写的 ...

  5. google浏览器高清壁纸保存

    谷歌浏览器 扩展程序里边 有一个主题壁纸 好多不错的,并且是高清大图!!! 主题应用市场: https://chrome.google.com/webstore/category/themes?hl= ...

  6. Python标准库 -- UUID模块(生成唯一标识)

    UUID是什么: UUID: 通用唯一标识符 ( Universally Unique Identifier ),对于所有的UUID它可以保证在空间和时间上的唯一性,也称为GUID,全称为: UUID ...

  7. MetaMask安装使用指南

    1.MetaMask(轻钱包) MetaMask是一款在谷歌浏览器Chrome上使用的插件类型的以太坊钱包,该钱包不需要下载,只需要在谷歌浏览器或基于谷歌浏览器内核的其它浏览器(如:360极速浏览器- ...

  8. Java实现二分法排序

    二分法:(二分法不是只能做数组,这里的数组只是为了举例) 在给出的有序排列的数组中,把目标值和数组中间值进行比较,如果相等,则返回中间值下标,如果目标值小于中间值,就从数组的前半段再次执行二分法查找, ...

  9. Spring Boot 基础概述与相关约定配置

    今天打算整理一下 Spring Boot 的基础篇,这系列的文章是我业余时间来写的,起源于之前对微服务比较感兴趣,微服务的范畴比较广包括服务治理.负载均衡.断路器.配置中心.API网关等,还需要结合 ...

  10. ps切图 切png图片——学习笔记

    第一步:新建一个图层,点击ps左上角“文件”,然后新建即可(或crtl+alt+n) 参数自己随便填,注意背景图片选择透明即可. 第二步:打开psd文件,点击工具中的“移动工具”,之后选中上面的“自动 ...