
JSON格式: []代表數(shù)組。 {}代表對象,里面是鍵值對。也可以直接寫value。
使用ORG.JSON包來解析JSON:



【net.sf.json和org.json區(qū)別】
https://my.oschina.net/wangwu91/blog/340721?fromerr=Jas5ObXx
項目中主要使用net.sf.json,似乎支持springmvc,且org.json無法從一個string解析成一個obj。
Gson:
通過Gson.builder來定制化Gson進行屬性名字映射、格式化打印、日期格式轉(zhuǎn)換,然后用gson.toJson(obj)來轉(zhuǎn)換Obj-> json,gson.FromJson(string,obj.class)
默認轉(zhuǎn)義html中的一些格式。
Jackson提供三種可選的Json處理方法:流式API(Stream)、樹模型(Tree Model)、數(shù)據(jù)綁定(Data Binding)
- DataBinding: 定義一個ObjectMapper來轉(zhuǎn)化對象為JSON和反序列化JSON為對象,涉及到的一些配置屬性在ObjectMapper中定義。
- 將Object定義成一個一個樹節(jié)點,然后轉(zhuǎn)化為JSON
- 使用JsonFactory創(chuàng)建一個JsonGenerator實例,然后利用這個實例逐個寫入域。
總結(jié):
Stream API方式是開銷最低、效率最高,但編寫代碼復(fù)雜度也最高,在生成Json時,需要逐步編寫符號和字段拼接json,在解析Json時,需要根據(jù)token指向也查找json值,生成和解析json都不是很方便,代碼可讀性也很低。
Databinding處理Json是最常用的json處理方式,生成json時,創(chuàng)建相關(guān)的java對象,并根據(jù)json內(nèi)容結(jié)構(gòu)把java對象組裝起來,最后調(diào)用writeValue方法即可生成json,
解析時,就更簡單了,直接把json映射到相關(guān)的java對象,然后就可以遍歷java對象來獲取值了。
TreeModel處理Json,是以樹型結(jié)構(gòu)來生成和解析json,生成json時,根據(jù)json內(nèi)容結(jié)構(gòu),我們創(chuàng)建不同類型的節(jié)點對象,組裝這些節(jié)點生成json。解析json時,它不需要綁定json到j(luò)ava bean,根據(jù)json結(jié)構(gòu),使用path或get方法輕松查找內(nèi)容。
FastJson
https://segmentfault.com/a/1190000011212806
- 速度快
- 功能強大
- 零依賴
- JsonObject <-> str
- str->JsonObject
- JsonObject->str
- Object <-> str
- str -> Object
- Object -> str



