本文只是記錄fastjson、jackson一些常用的操作方法,沒作比較,網上寫比較的文章很多啦。 1、對象轉Json串 2、Json串轉Json對象 3、Json串轉Java對象 4、獲取Json對象的key 5、獲取Json對象的value 6、創建一Json對象並設置key\value 在這點 ...
本文只是記錄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);