【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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM