ジャクソン2 – JavaオブジェクトとJSONの変換
このチュートリアルでは、Jackson 2.xを使用してJavaオブジェクトをJSONに/から変換する方法を示します。
1. 基本
1.1 Convert a Staff
object to from JSON.
writeValue(...)
–JavaオブジェクトからJSON
ObjectMapper mapper = new ObjectMapper(); // Java object to JSON file mapper.writeValue(new File("c:\\test\\staff.json"), new Staff()); // Java object to JSON string String jsonString = mapper.writeValueAsString(object);
readValue(...)
–JSONからJavaオブジェクト
ObjectMapper mapper = new ObjectMapper(); //JSON file to Java object Staff obj = mapper.readValue(new File("c:\\test\\staff.json"), Staff.class); //JSON URL to Java object Staff obj = mapper.readValue(new URL("http://some-domains/api/name.json"), Staff.class); //JSON string to Java Object Staff obj = mapper.readValue("{'name' : 'example'}", Staff.class);
P.S Tested with Jackson 2.9.8
Note
このHow to parse JSON with
Jacksonを読んでください。これには、JSONとの間のオブジェクト、@JsonView
、@JsonProperty
、@JsonInclude
、@JsonIgnore
などのJacksonの例が含まれています。 s、およびいくつかのFAQ。
1. ジャクソンをダウンロード
1.1 Declares jackson-databind
, it will pull in jackson-annotations
and jackson-core
pom.xml
com.fasterxml.jackson.core jackson-databind 2.9.8
1.2 Review the Jackson dependencies :
ターミナル
$ mvn dependency:tree \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.8:compile [INFO] +- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile [INFO] \- com.fasterxml.jackson.core:jackson-core:jar:2.9.8:compile
Difference between Jackson 1 and Jackson 2
ほとんどのAPIは、同じメソッド名とシグネチャを維持していますが、パッケージが異なるだけです。
-
ジャクソン1.x – org.codehaus.jackson.map
-
ジャクソン2.x – com.fasterxml.jackson.databind
2. POJO
テスト用のシンプルなJavaオブジェクト。
Staff.java
public class Staff { private String name; private int age; private String[] position; // Array private Listskills; // List private Map salary; // Map // getters , setters, some boring stuff }
3. JavaオブジェクトからJSON
JacksonExample1.java
package com.example; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.File; import java.io.IOException; import java.math.BigDecimal; import java.util.Arrays; import java.util.HashMap; import java.util.Map; public class JacksonExample1 { public static void main(String[] args) { ObjectMapper mapper = new ObjectMapper(); Staff staff = createStaff(); try { // Java objects to JSON file mapper.writeValue(new File("c:\\test\\staff.json"), staff); // Java objects to JSON string - compact-print String jsonString = mapper.writeValueAsString(staff); System.out.println(jsonString); // Java objects to JSON string - pretty-print String jsonInString2 = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(staff); System.out.println(jsonInString2); } catch (IOException e) { e.printStackTrace(); } } private static Staff createStaff() { Staff staff = new Staff(); staff.setName("example"); staff.setAge(38); staff.setPosition(new String[]{"Founder", "CTO", "Writer"}); Mapsalary = new HashMap() {{ put("2010", new BigDecimal(10000)); put("2012", new BigDecimal(12000)); put("2018", new BigDecimal(14000)); }}; staff.setSalary(salary); staff.setSkills(Arrays.asList("java", "python", "node", "kotlin")); return staff; } }
出力
c:\test\staff.json
{"name":"example","age":38,"position":["Founder","CTO","Writer"],"skills":["java","python","node","kotlin"],"salary":{"2018":14000,"2012":12000,"2010":10000}}
ターミナル
{"name":"example","age":38,"position":["Founder","CTO","Writer"],"skills":["java","python","node","kotlin"],"salary":{"2018":14000,"2012":12000,"2010":10000}} { "name" : "example", "age" : 38, "position" : [ "Founder", "CTO", "Writer" ], "skills" : [ "java", "python", "node", "kotlin" ], "salary" : { "2018" : 14000, "2012" : 12000, "2010" : 10000 } }
4. JSONからJavaオブジェクト
JacksonExample2.java
package com.example; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.File; import java.io.IOException; public class JacksonExample2 { public static void main(String[] args) { ObjectMapper mapper = new ObjectMapper(); try { // JSON file to Java object Staff staff = mapper.readValue(new File("c:\\test\\staff.json"), Staff.class); // JSON string to Java object String jsonInString = "{\"name\":\"example\",\"age\":37,\"skills\":[\"java\",\"python\"]}"; Staff staff2 = mapper.readValue(jsonInString, Staff.class); // compact print System.out.println(staff2); // pretty print String prettyStaff1 = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(staff2); System.out.println(prettyStaff1); } catch (IOException e) { e.printStackTrace(); } } }
出力
Staff{name='example', age=37, position=null, skills=[java, python], salary=null} { "name" : "example", "age" : 37, "position" : null, "skills" : [ "java", "python" ], "salary" : null }
Note
その他のジャクソンの例はこれを読んでいます–How to parse JSON with Jackson