最近在写接口,死磕json,这在以前是不怎么接触的,但是网上的文章对我来说不是很全面,花了一周的时间查资料,使用,总结了一些小经验,所以记录下来,给大家作参考,有什么不足的地方也欢迎大家来补充说明.
之前使用的是net.sf.json.包下的JsonObject,但是有很多功能是没有的,所以我使用的是阿里的fastjson
使用之前记得首先在pom.xml文件中导入fastjson的依赖(前提是maven项目)
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.30</version>
</dependency>
这样重启项目就可以直接使用了
1.Map,List,.对象.....转json类型的字符串(注意:这个方法是转化为json对象,不是json数组)
//JSONObject的toJSONString方法可以把任何类型转化为json类型的字符串
String jSONObject=JSONObject.toJSONString(object)
//就是这么方便又强大!
2.取值
取值其实很简单,但是有时候很难,你根本不知道对方当初怎么存的值.
2.1 map集合里存对象,对象里存list集合
//首先将String转为jsonObject才好操作
JSONObject fromObject = JSONObject.parseObject(jsonString);
//从json中分层取出里面key为list的值
JSONObject object = fromObject.getJSONObject("list");
//这一步就是取出list集合值的步骤
list = (List<ClaimReportDataCheckResponse>) object.get("list");
//如果你想取出list集合里的值可以进行便利,很简单,就不写了
2.2 JSONObject转对象
//这个方法的第一个参数是JSONObject对象 ,第二个参数是实体类的.class类
JSONObject.toJavaObject(json, clazz)
//这个是代码例子
ClaimReportData c =new ClaimReportData (); //实体类
//这是把String类型json转为jsonobject
JSONObject responsePic = JSONObject.parseObject(jsonStringPic);
JSONObject jsonObject = responsePic.getJSONObject("ClaimPicList");//前面获取到的JSONObject对象
c= JSONObject.toJavaObject(jsonObject , ClaimReportData .class);
//当然还有很多其他的方法,大家可以多试验几种
3.最重要的一个作用,时间格式转化
Date时间转jaon格式会发生格式变化,遇到你们就会纠结了,这里提前注意一下,也是我为什么要用fastjson
处理格式错乱的方法:
//在你实体类每个date属性上都添加注解@jsonfield 时间格式根据自己需要设置
@JSONField(format="yyyy-MM-dd HH:mm:ss")
private Date updateTime;
//很简单,但是很高效, 我找了两天才找到的方法.
其实到这儿就差不多够用了 ,fastjson基本满足你所有的需要,
如果有我没涉及到的,大家可以直接自己根据JsonObject的提示看它的返回值和参数来满足自己的需求.
后期有其他发现我还会补充的,也希望大家多多留言,提出一些生僻,但实用的方法.
代码的世界,因你我更加精彩!
码字不易,共建和谐社会,谢谢您花时间看我的博客.