JSON 解析工具的封装(FastJSON-->Java)

时间:2022-10-12 22:50:48

作者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 解析工具的封装&lpar;Java&rpar;

    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. &lbrack;转&rsqb; 各种Json解析工具比较 - json-lib&sol;Jackson&sol;Gson&sol;FastJson

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

  5. Java:JSON解析工具-org&period;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&period;json使用教程

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

随机推荐

  1. DOMO1

    以下是Demo首页的预览图 demo下载:http://www.eoeandroid.com/forum.php?mod=attachment&aid=NjE0Njh8ZTIyZDA2M2N8 ...

  2. My Baits入门(一)mybaits环境搭建

    1)在工程下引入mybatis-3.4.1.jar包,再引入数据库(mysql,mssql..)包. 2)在src下新建一个配置文件conf.xml <?xml version="1. ...

  3. php操作ini配置文件

    有些配置化的数据放到配置文件可以方便管理,比如数据库信息,路由信息,先建立配置文件,test.ini [database_setting] host=127.0.0.1 user=root passw ...

  4. 编写高质量JS代码的68个有效方法(五)

    No.21.使用apply方法通过不同数量的参数调用函数 Tips: 使用apply方法自定一个可计算的参数数组来调用可变参数的函数 使用apply方法的第一个参数给可变参数的方法提供一个接收者 // ...

  5. jQuery1&period;9&period;1--attr&comma;prop与val方法源码分析

    这里只介绍这几个方法的源码,这部分引用了一个技巧,钩子对象,用来做兼容fixed的对象,后面也有一些使用.钩子对象具体的兼容细节这里就不详解了. var nodeHook, boolHook, rcl ...

  6. Scala 简介

    Scala 特性 面向对象特性 Scala是一种纯面向对象的语言,每个值都是对象.对象的数据类型以及行为由类和特质描述. 类抽象机制的扩展有两种途径:一种途径是子类继承,另一种途径是灵活的混入机制.这 ...

  7. Java之代理(jdk静态代理,jdk动态代理,cglib动态代理,aop,aspectj)

    一.概念 代理是什么呢?举个例子,一个公司是卖摄像头的,但公司不直接跟用户打交道,而是通过代理商跟用户打交道.如果:公司接口中有一个卖产品的方法,那么公司需要实现这个方法,而代理商也必须实现这个方法. ...

  8. aapt获取包名和activity,启动app

    1.android sdk的环境安装好了之后,在build-tools\** 的目录下找到aapt.exe,将这个路径设置环境变量,添加到path下 2.在cmdl里面输入:aapt,出现以下内容就是 ...

  9. python3学习笔记二(注释、缩进)

    注释 单行注释,用#开头即可 多行注释,用''' ''' 或""" """ 缩进 python不能像其他语言一样采用{}或者begin... ...

  10. 移动前端调试工具-Weinre真机调试

    之前做移动前端调试页面的时候就是简单的使用Chrome模拟器调试,能满足基本基本的需求,后来发现了基于Web Inspector(Webkit)的远程调试工具Weinre,可以在PC端直接调试运行在移 ...