fastjson
alibaba fastjson是阿里巴巴公司开源维护的一个处理json格式数据的java工具库。
功能特性:
- 数据绑定databind (json string <--> java object, JSON <--> java object)
- 保持单一对象。序列化时相同的java对象引用只会在一个地方序列化一次,另外的引用地方以特殊的引用表述,反序列化后保证了与序列化之前单一java对象的数据引用视图。
-
json中基本类型(数字、字符串、布尔等标量)的容器有两种,对象和数组,在fastjson中分别对应类
JSONObject
和JSONArray
,他们有共同父类JSON
。json对象是键值对集合,相应的JSONObject蕴含键值对集,实现了接口Map<String,Object>
;json数组是元集合,相应的JSONArray实现了接口List<Object>
。JSON
类中还包含各种JSON
, javaObject
,String
之间的相互转换工具函数。-
JSON.toJSONString(Object,SerializeConfig=SerializeConfig.globalInstance,...)
函数的功能是将java对象序列化为json字符串。SerializeConfig参数是关于序列化的配置,默认使用全局共享实例SerializeConfig.globalInstance
。SerializeConfig可通过.config(Class<?> clazz, SerializerFeature feature, boolean value)
为给定类打开/关闭多种序列化特性,所有特性在枚举SerializerFeature
中。对于java bean(或所有将转换为json字符串的java对象),配置特性WriteMapNullValue
可控制null值字段是否需要序列化出。 -
JSON.toJSON(Object,SerializeConfig=SerializeConfig.globalInstance)
将java bean对象转换为JSONObject(Map对象)。需要注意的是,尽管该函数接受SerializeConfig,且不论WriteMapNullValue特性是否关闭,转换出的JSONObject对象都会包含java bean的null值字段,也就说SerializeConfig的WriteMapNullValue特性对于转换为JSONObject无用,但对于转换为字符串管用,同时在观察转为JSON.toJSON中SerializeConfig的WriteMapNullValue特性是否有用时需注意不能以System.out.println(JSONObject)
打印输出来观察,因为其输出已调用JSONObject.toString
将JSONObject对象转为了json字符串,转换为json string的过程涉及了WriteMapNullValue特性。
各jvm序列化器(包含数个json库)性能对比结果见 https://github.com/eishay/jvm-serializers/wiki 。
-