「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