alibaba fastjson是阿里巴巴公司開源維護的一個處理json格式數據的java工具庫。java
功能特性:git
json中基本類型(數字、字符串、布爾等標量)的容器有兩種,對象和數組,在fastjson中分別對應類JSONObject
和JSONArray
,他們有共同父類JSON
。json對象是鍵值對集合,相應的JSONObject蘊含鍵值對集,實現了接口Map<String,Object>
;json數組是元集合,相應的JSONArray實現了接口List<Object>
。github
JSON
類中還包含各類JSON
, java Object
, String
之間的相互轉換工具函數。json
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
各jvm序列化器(包含數個json庫)性能對比結果見 https://github.com/eishay/jvm-serializers/wiki 。函數