【Json】fastjson與jackson常用操作記錄
阿新 • • 發佈:2020-06-28
本文只是記錄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