目录:
- fastjson简介
- 生成json字符串
- 解析json字符串为四种类型
- JSONObject与JSON字符串的转换
- JSONObject中Map, List转换
- fastjson解析null值不显示问题
- 总结
fastjson简介
Fastjson是一个Java语言编写的高性能功能完善的JSON库。fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson。并且还超越了google的二进制协议protocol buf。Fastjson完全支持http://json.org的标准,也是官方网站收录的参考实现之一。支持各种JDK类型。包括基本类型、JavaBean、Collection、Map、Enum、泛型等。支持JDK 5、JDK 6、Android、阿里云手机等环境。
maven依赖:
<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.30</version>
</dependency>
生成json字符串
JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>
生成json字符串
String jsonStrng = JSON.toJSONString(object);
解析json字符串为四种类型
JavaBean
Person person = JSON.parseObject(jsonString, Person.class);
List<JavaBean>
List<Person> listPerson =JSON.parseArray(jsonString, Person.class);
List<String>
List<String> listString = JSON.parseArray(jsonString, String.class);
List<Map<String,Object>>
List<Map<String, Object>> listMap = JSON.parseObject(jsonString, new TypeReference<List<Map<String,Object>>>(){});
注意:此处可看出fastjson反射机制比gson更准确, id = 1001 通过fastjson反射仍是 id = 1001 , 而通过gson反射结果 为 id =1001.0
JSONObject与JSON字符串的转换
JSONObject jsonObject = JSON.parseObject(jsonString);
JSONObject中 Map, List转换
Map转JSONObject
JSONObject json = JSONObject.parseObject(JSON.toJSONString(itemMap));
JSONObject转Map
Map<String, Object> map = JSONObject.toJavaObject(itemJSONObj, Map.class);
注:JSON.parseObject()同样可以转换
List转JSONArray
JSONArray array = JSONArray.parseArray(JSON.toJSONString(itemList));
fastjson解析null值不显示问题
参考fastjson解析null值处理 null的属性不显示
语法:
JSONObject.toJSONString(Object object, SerializerFeature… features)
可以用参数
QuoteFieldNames———-输出key时是否使用双引号,默认为true
WriteMapNullValue——–是否输出值为null的字段,默认为false
WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null
WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null
WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null
WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非null
String str = JSONObject.toJSONString(jsonMap,SerializerFeature.WriteMapNullValue);
总结
还有很多详细的demo,可以参看这里