1. 程式人生 > >分別講解gson和fastjson解析json格式

分別講解gson和fastjson解析json格式

1、Gson講解

gson是谷歌開發支援的,谷歌GSON這個Java類庫可以把Java物件轉換成JSON,也可以把JSON字串轉換成一個相等的Java物件。

伺服器端將資料轉換成json字串

在很多的時候,需要客戶端上傳json格式給伺服器,如果你自己去拼湊json上傳,這樣不僅效率低,程式碼也不整潔。

Gson提供String str=new Gson().toJson(src);

src為Object物件,你可以是JavaBean值,也可以是Map<String,Object>物件等,這樣很方便我們的使用。

返回的str就是json格式了,這個時候列印驗證一下。

*

客戶端將json字串轉換為相應的javaBean

使用泛型獲取javaBean

這邊cls為javaBean物件的類,如:Student.class

Gson gson = new Gson();
            t = gson.fromJson(jsonString, cls);

 Gson gson = new Gson();
            list = gson.fromJson(jsonString, new TypeToken<List<cls>>() {
            }.getType());

Map<String, Object> 這種是一種鍵值對,只要是鍵值對型別都可以用Map<String, Object>儲存

例如:如果下面兩種型別在同一個json list下,他們的欄位是不一樣的,一種方式是擴大JavaBean的型別,另一種就是用Map<String, Object>解析,因為他們都是鍵值對型別的(這邊一般會是不同介面的值同時用)。


Gson gson = new Gson();
            list = gson.fromJson(jsonString,
                    new TypeToken<List<Map<String, Object>>>() {
                    }.getType());



但是遇到伺服器返回的欄位為漢字的是時候,不用感到奇怪,不用擔心Gson解析不了。

遇到這樣的欄位主要在實體的時候新增 @SerializedName(value = "班級")  這樣的註解就可以了


Gson總結:我們在開發的時候,我們經常把json格式的字串解析成JavaBean或者List<JavaBean>形式,gson的內容有很多,gson是谷歌提供的,希望大家一起多多研究。

2、fastjson講解

fastjson是由阿里巴巴提供的,很早就聽聞了,但是都沒有時間去研究一下,今天就來總結一下。

優勢:

1、遵循http://json.org標準,為其官方網站收錄的參考實現之一。
2、功能qiang打,支援JDK的各種型別,包括基本的JavaBean、Collection、Map、Date、Enum、泛型。
3、無依賴,不需要例外額外的jar,能夠直接跑在JDK上。
4、開源,使用Apache License 2.0協議開源。http://code.alibabatech.com/wiki/display/FastJSON/Home

使用介紹:

Fastjson的最主要的使用入口是com.alibaba.fastjson.JSON
通過JSON這個類進行解析,以下是JSON主要解析方法
public static final Object parse(String text); // 把JSON文字parse為JSONObject或者JSONArray
public static final JSONObject parseObject(String text); // 把JSON文字parse成JSONObject
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文字parse為JavaBean
public static final JSONArray parseArray(String text); // 把JSON文字parse成JSONArray
public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文字parse成JavaBean集合
把Object(JavaBean、Map<String,Object>、List<JavaBean>)轉為json格式
public static final String toJSONString(Object object); // 將JavaBean序列化為JSON文字
public static final String toJSONString(Object object, boolean prettyFormat); // 將JavaBean序列化為帶格式的JSON文字
public static final Object toJSON(Object javaObject); 將JavaBean轉換為JSONObject或者JSONArray。

這些方法是大家比較常用的,接下來我講一下我比較喜歡用的一個功能。我們通過JSON.parseObject(json);得到

JSONObject 這個物件。
JSONObject 常用方法介紹:
public boolean containsKey(Object key)
public boolean containsValue(Object value)
public Object get(Object key)
public JSONObject getJSONObject(String key)
public <T> T getObject(String key, Class<T> clazz)
public Boolean getBoolean(String key)
public Integer getInteger(String key)
public String getString(String key)
.....這裡面的方法很多,我這邊就不一一列出了 

這邊主要是通過key直接解析到value的值,這個對我們開發是很方便的,有時候伺服器返回一堆有用沒用的資料,我們用的可能就那幾個欄位。

例子:

有時候伺服器json返回:

{
  "status":"succeed",
   "info":"成功"
}

這個是很簡單的json格式,以前用Gson的時候我要建立一個JavaBean解析它嗎?但是我感覺這樣很麻煩,通過
JSONObject  jsonobject =JSON.parseObject(json); String status=jsonobject.getString("status"); 這樣status就等於“succeed”,我感覺這樣解析就挺方便的。
fastjson總結:我用fastjson沒有多久,fastjson比較快,效能比較好,功能也比較多。後來我就把gson換成fastjson了,fastjson的內容很多,希望大家一起研究。

剛剛寫blog、有問題請指出,希望大家的支援,歡迎評論。