分別講解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格式了,這個時候列印驗證一下。
*
使用泛型獲取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、有問題請指出,希望大家的支援,歡迎評論。