1. 程式人生 > 實用技巧 >【Json】fastjson與jackson常用操作記錄

【Json】fastjson與jackson常用操作記錄

本文只是記錄fastjson、jackson一些常用的操作方法,沒作比較,網上寫比較的文章很多啦。

1、物件轉Json串

// fastjson                                                            
String objStr = JSON.toJSONString(obj);  // 預設去掉屬性為Null值的

// jackson
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); 
// 預設不會去掉Null的,要自己配 String objStr = mapper.writeValueAsString(obj);

2、Json串轉Json物件

// fastjson
JSONObject objJson = JSON.parseObject(objStr);

// jackson
ObjectMapper mapper = new ObjectMapper();
JsonNode objJson = mapper.readTree(objStr);

3、Json串轉Java物件

// fastjson
Clazz obj = JSON.parseObject(jsonStr, Clazz.class
); // jackson ObjectMapper mapper = new ObjectMapper(); Clazz obj = mapper.readValue(jsonStr, Clazz.class);

4、獲取Json物件的key

// fastjson
Set<String> keySet = jsonObj.keySet();
String key = keySet.iterator().next();  // 得到第一個key

// jackson
Iterator<String> keys = jsonObj.fieldNames();
String key 
= fieldNames.next(); // 得到第一個key

5、獲取Json物件的value

// fastjson
jsonObj.get("key")

// jackson
jsonObj.path("key")

6、建立一Json物件並設定key\value

// fastjson
JSONObject jsonObj = new JSONObject();
jsonObj.put("key", oldJsonObj);

// jackson
ObjectMapper mapper = new ObjectMapper();
ObjectNode jsonObj = mapper.createObjectNode();
jsonObj.set("key", oldJsonObj);

在這點上,fastjson是直接一個JSONObject搞定,而jackson中JsonNode並沒有直接能設定key/value的方法,這裡要使用ObjectNode,jackson提供了樹模型(tree model)來生成和解析json。如果想訪問並對部分屬性作修改的操作,樹模型是很好的選擇,ObjectNode繼承於JsonNode,下面給個例子:

ObjectMapper mapper = new ObjectMapper(); 
// 建立ObjectNode 
ObjectNode studentNode = mapper.createObjectNode(); 
// 新增屬性 
studentNode.put("name","xiaoming"); 
studentNode.put("age",18); 

ObjectNode addressNode = mapper.createObjectNode(); 
addressNode.put("street","guangzhou"); 

// 設定子節點 
studentNode.set("addr",addressNode); 
// path查詢節點 
JsonNode searchNode = studentNode.path("street"); 
// 刪除屬性 
((ObjectNode) studentNode).remove("addr"); 
// 讀取
JsonNode rootNode = mapper.readTree(studentNode.toString()); 
// JsonNode轉java物件 
Student student = mapper.treeToValue(studentNode, Student.class); 
// java物件轉JsonNode 
JsonNode node = mapper.valueToTree(student);

轉:https://www.cnblogs.com/weknow619/p/9466198.html

細節:https://www.cnblogs.com/yibutian/p/9473095.html