1. 程式人生 > >Json之 jackson,gson

Json之 jackson,gson

Json之 jackson,gson等

(spring web使用了jackson作為預設實現)
常用有三種json解析jackson、fastjson、gson。

jackson

jackson主要使用ObjectMapper物件來進行序列化以及反序列化操作。
使用jackson可以毫無壓力的將複雜物件進行完全序列化,也可以將各種型別的物件反序列化。

ObjectMapper mapper = new ObjectMapper();
//直接讀取簡單JSON
List list = mapper.readValue(result, List.class)
//List轉JSON
String json = mapper.writeAsString(Arrays.asList(1, 2, 3))

gson

Gson(又稱Google Gson)是Google公司釋出的一個開原始碼的Java庫,主要用途為序列化Java物件為JSON字串,或反序列化JSON字串串成Java物件.GSON核心jar包不到1M,非常精簡,但提供的功能無疑是非常強大的,如果使用JDK自帶的JSON解析API,使用起來相對比較繁瑣一點,而且程式碼量較多。

使用

/ 例如轉化一個型別不固定的List, 自定義型別同理
Gson gson = new Gson();
List origin = new ArrayList();
origin.add(12);
origin.add("dfsf");
System.out.println(gson.toJson(origin));
// 結果為: [12,"dfsf"]

// 讀取這個JSON陣列
Gson gson = new Gson();
List result = gson.fromJson("[12,\"dfsf\"]", List.class);
for (Object o : result) {
    System.out.print(o.toString() + " ");
}
// 結果為: 12.0 dfsf 

比較

jackson的效能幾乎是gson的10倍,而且隨著資料的增長,jackson的耗時也都很平穩,而gson則耗時增長明顯,最後直接OOM了,