【Json】fastjsonとjacksonの常用操作記録

5857 ワード

本文は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 keySet = jsonObj.keySet();
String key = keySet.iterator().next();  //      key

// jackson
Iterator keys = jsonObj.fieldNames();
String key = fieldNames.next();  //      key

 
5、Jsonオブジェクトのvalueを取得する
// fastjson
jsonObj.get("key")

// jackson
jsonObj.path("key")

 
6、Jsonオブジェクトを作成し、keyvalueを設定する
// 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);