【Json】fastjsonとjacksonの常用操作記録
5857 ワード
本文はfastjson、jacksonのよく使われる操作方法を記録しただけで、比較していません.ネット上で比較を書く文章がたくさんあります.
1、対象回転Json列
2、JsonシリアルJsonオブジェクト
3、JsonシリアルJavaオブジェクト
4、Jsonオブジェクトのkeyを取得する
5、Jsonオブジェクトのvalueを取得する
6、Jsonオブジェクトを作成し、keyvalueを設定する
この点fastjsonは直接JSONObjectで済むがjacksonではJsonNodeがkey/valueを直接設定できる方法はなく,ここではObjectNodeを用い,jacksonはツリーモデル(tree model)を提供してjsonを生成し解析する.一部のプロパティにアクセスして変更するには、ツリーモデルが便利です.ObjectNodeはJsonNodeに継承されています.次に例を示します.
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);