作者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. Shell - 简明Shell入门13 - 用户输入(UserInput)

    示例脚本及注释 1 - arguments #!/bin/bash if [ -n "$1" ];then # 验证参数是否传入 echo "The first para ...

  2. Docker - 基础讲义

    Docker Docker - 官网 Docker - Hub GitHub - Docker dockerinfo Docker中文社区 Docker入门教程 Docker从入门到实践 虚拟化技术 ...

  3. D3.js (v3)+react框架 基础部分之认识选择集和如何绘制一个矢量图

    首先需要下载安装d3.js  :  yarn add d3 然后在组建中引入 :  import * as d3 from 'd3' 然后定义一个方法,在componentDidMount()这个钩子 ...

  4. job任务执行流程与分区机制

    job任务执行流程    1.run job阶段        ①收集整个job的环境信息(比如通过conf设定的参数,还有mapperClass,reducerClass,以及输出kv类型)     ...

  5. Python小白学习之路(二十三)—【生成器补充】

    生成器的一些补充 接着下鸡蛋和吃包子! 补充一:生成器只能遍历一次 (总是把生成器比喻成母鸡下鸡蛋,需要一个下一个,首先是下出来的鸡蛋不能塞回母鸡肚子里,其次是一个母鸡一生只能下一定数量的鸡蛋,下完了 ...

  6. 【5】JMicro微服务-熔断降级

    如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl   1. 使用服务熔断降级特性,必须先启动Pubsub服务,服务监听服务,熔断器服务3个服务 先启动Pubsub及服务监听两 ...

  7. (转载)es进行聚合操作时提示Fielddata is disabled on text fields by default

    原文地址:http://blog.csdn.net/u011403655/article/details/71107415 根据es官网的文档执行 GET /megacorp/employee/_se ...

  8. 全网最详细的启动Kafka服务时出现kafka.common.InconsistentBrokerIdException: Configured brokerId 3 doesn't match stored brokerId 1 in meta.properties错误的解决办法(图文详解)

    不多说,直接上干货! 问题详情 执行bin/kafka-server-start.sh config/server.properties 时, [kfk@bigdata-pro03 kafka_2.- ...

  9. sql查询其他服务器数据库表

    exec sp_addlinkedserver 'abc', '', 'SQLOLEDB', '192.168.49.34' exec sp_addlinkedsrvlogin ' go --查询 s ...

  10. PHP 编程小点

    1.全局变量,$global 2.引用.函数返回引用.写时拷贝.对象复制.clone.unset.$varname=null 3.函数作用域,但是没有块级作用域 4.php7 新特性 5.autolo ...