fastjson主要的使用入口
JSON類(和Gson類一樣)
解析(即反序列化JSONObejct,JSONArray,javabean)和生成(JSON及序列化變成字符串就是把內(nèi)存中對象數(shù)據(jù)讀出來)
Fastjson API入口類是com.alibaba.fastjson.JSON缠导,常用的序列化操作都可以在JSON類上的靜態(tài)方法直接完成,用這些方法來操作就行,就是用
JSON這個類就類似一個工具類,他里面沒有封裝太多東西不存儲東西主要就是提供方法ok(方法也就解析和生成類似gson鞍爱,如下parseXXX或toJSONString()這些,就是下面方法, 如map的封裝是jsonobject中會封裝 ? 任何對象都行纠俭,另外解析為具體的java類對象后面參數(shù)還是要指定class雳锋,和gson類似()
比gson多的一點是他可以轉(zhuǎn)化成JSONObject和JSONArray來操作解析不需要轉(zhuǎn)化為具體的類厨疙,兩個作用如下好啰,相對在某些方面更通用和方便
publicstaticfinalObject parse(String text);// 把JSON文本parse為JSONObject或者JSONArrayparse 解析成
publicstaticfinalJSONObject parseObject(String text)轩娶;// 把JSON文本parse成JSONObject
publicstaticfinalJSONArray parseArray(String text);// 把JSON文本parse成JSONArray
publicstaticfinal T parseObject(String text, Class clazz);// 把JSON文本parse為JavaBean
publicstaticfinal List parseArray(String text, Class clazz);//把JSON文本parse成JavaBean集合
生成:
publicstaticfinalString toJSONString(Object object);// 將JavaBean序列化為JSON文本
publicstaticfinalString toJSONString(Object object,booleanprettyFormat);// 將JavaBean序列化為帶格式的JSON文本
對象之間轉(zhuǎn)化
publicstaticfinalObject toJSON(Object javaObject); 將JavaBean轉(zhuǎn)換為JSONObject或者JSONArray儿奶。
3框往、有關(guān)類庫的一些說明
SerializeWriter:相當(dāng)于StringBuffer
JSONArray:相當(dāng)于List
JSONObject:相當(dāng)于Map
這兩個作用主要就是吧json解析后存儲數(shù)據(jù)而不是直接解析為對應(yīng)的類,然后可以使用這兩個類來操作解析更加方便類似map闯捎,如原因: 如之前天才在屬性中使用JSONObject也是比較好的椰弊,比較通用许溅,能夠吧sjon字符存誠任何jsonobject中來存儲,ok秉版,如上有的可以直接就直接解析為對應(yīng)的類贤重,有的不能這樣,如多層的清焕,那末就解析存儲到j(luò)sonobject這種就行并蝗,然后用其這個對象類似map來獲取對應(yīng)的key對應(yīng)的值一層層解析就行
https://my.oschina.net/sulliy/blog/499834兩個類具體東西如下:
不定義任何類,直接通過JSONArray和JSONObject來訪問秸妥。
JSONArray用來存放JSON數(shù)組滚停。解析成功后,如果是Java內(nèi)置對象粥惧,可以直接調(diào)用相應(yīng)方法獲取值键畴,比如public Integer getInteger(int index)。如果不是內(nèi)置對象突雪,可以調(diào)用public JSONObject getJSONObject(int index)來讀取對象起惕。如果還是數(shù)組,可以調(diào)用public JSONArray getJSONArray(int index)咏删。事實上惹想,JSONArray就是一個List。
JSONObject用來存放非內(nèi)置對象督函,組織形式是一個鍵值對勺馆。事實上,JSONObject是一個Map侨核。解析成功后草穆,如果是Java內(nèi)置對象,可以直接調(diào)用相應(yīng)方法獲取值搓译,比如ublic Integer getInteger(String key)悲柱。如果不是內(nèi)置對象,可以調(diào)用public JSONObject getJSONObject(String key)來讀取對象些己。如果還是數(shù)組豌鸡,可以調(diào)用public JSONArray getJSONArray(String key)。
通過組合使用JSONArray和JSONObject段标,我們就可以訪問任何反序列化出來的JSON對象涯冠,而不需要對象的類信息。
主要方法如上逼庞,另外注意一點蛇更,注意最終要封裝到j(luò)sonobject或jsonarray中為最后一層而且為jsonobject才用上面如Integer getInteger(int index)String get(String key) 來獲取值 ?最終一般都死獲取到具體的基本類型對應(yīng)的值
4、fastjson還有很多很高級的特性,比如支持注解派任、支持全類型序列化砸逊,這些都是很好的特性,功能強大掌逛,不在本次測試范圍
Gson提供了fromJson()和toJson()兩個直接用于解析和生成的方法师逸,前者實現(xiàn)反序列化,后者實現(xiàn)了序列化豆混。同時每個方法都提供了重載方法篓像,我常用的總共有5個。
Gson.toJson(Object);
Gson.fromJson(Reader,Class);
Gson.fromJson(String,Class);
Gson.fromJson(Reader,Type);
Gson.fromJson(String,Type);