「Java」JacksonでJavaオブジェクトのJSON表現を得るコード
Jackson を利用して Javaオブジェクトの JSON 表現を出力するサンプルコードを書いたのでメモとして残しておきます。
- ObjectToJson.java
package com.example.jackson; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; public class ObjectToJson { private static ObjectMapper mapper = new ObjectMapper(); static { mapper.enable(SerializationFeature.INDENT_OUTPUT); } public static String convertToJson(Object o) { String json = null; try { json = mapper.writeValueAsString(o); } catch (JsonProcessingException e) { e.printStackTrace(); } return json; } }
ObjectMapper の writeValueAsString に対象のオブジェクトを渡すのみです。 インデントをつけるために SerializationFeature.INDENT_OUTPUT を指定しています。
ObjectMapper (jackson-databind 2.7.0 API)
実行結果も併せてはっておきます。
- PlainObject.java
package com.example.jackson; import java.util.List; import java.util.Map; public class PlainObject { private String string; private int i; private List<String> list; private Map<String, String> map; private ChildObject co; public String getString() { return string; } public void setString(String string) { this.string = string; } public int getI() { return i; } public void setI(int i) { this.i = i; } public List<String> getList() { return list; } public void setList(List<String> list) { this.list = list; } public Map<String, String> getMap() { return map; } public void setMap(Map<String, String> map) { this.map = map; } public ChildObject getCo() { return co; } public void setCo(ChildObject co) { this.co = co; } } class ChildObject { private String s; private int i; public String getS() { return s; } public void setS(String s) { this.s = s; } public int getI() { return i; } public void setI(int i) { this.i = i; } }
- Main.java
package com.example.jackson; import java.util.Arrays; import java.util.HashMap; public class Main { public static void main(String[] args) { PlainObject pojo = new PlainObject(); pojo.setString("test"); pojo.setI(0); pojo.setList(Arrays.asList(new String[] { "list1", "list2", "list3" })); pojo.setMap(new HashMap<String, String>() { { put("key1", "value1"); put("key2", "value2"); put("key3", "value3"); } }); ChildObject co = new ChildObject(); co.setS("aaa"); co.setI(1); pojo.setCo(co); System.out.println("=== print1 ====="); System.out.println(ObjectToJson.convertToJson(pojo)); pojo = new PlainObject(); pojo.setString("test"); pojo.setI(0); pojo.setList(Arrays.asList(new String[] { "list1", "list2", "list3" })); pojo.setCo(co); System.out.println("=== print2(contain null value) ====="); System.out.println(ObjectToJson.convertToJson(pojo)); } }
- 実行結果
=== print1 ===== { "string" : "test", "i" : 0, "list" : [ "list1", "list2", "list3" ], "map" : { "key1" : "value1", "key2" : "value2", "key3" : "value3" }, "co" : { "s" : "aaa", "i" : 1 } } === print2(contain null value) ===== { "string" : "test", "i" : 0, "list" : [ "list1", "list2", "list3" ], "map" : null, "co" : { "s" : "aaa", "i" : 1 } }
いい感じに出力されています。 簡単ですが、以上です。
[環境情報] Windows 10 Java SE 8 Update 152 Jackson 2.7.4