- 1. 简述
- 2. 下载 jackson
- 3. POJO对象
- 4. Java 对象转 JSON
- 5. JSON 到 Java 对象
Jackson 提供了将 Java 对象与JSON 相互转换的方法:writeValue()与readValue()
mapper.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, default compact-print
String jsonString = mapper.writeValueAsString(new Staff());
// pretty-print
String jsonString2 = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(new Staff());
mapper.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/staff.json"), Staff.class);
//JSON string to Java Object
Staff obj = mapper.readValue("{'name' : 'mkyong'}", Staff.class);
2. 下载 jackson
声明jackson-databind,它将拉入jackson-annotations并jackson-core
com.fasterxml.jackson.core jackson-databind 2.9.8
查看当前依赖的依赖树:
$ mvn dependency:tree [INFO] - com.fasterxml.jackson.core:jackson-databind:jar:2.9.8:compile [INFO] +- com.fasterxml.jackson.core:jackson-annotations:jar:2.13.0:compile [INFO] - com.fasterxml.jackson.core:jackson-core:jar:2.13.0:compile3. POJO对象
一个简单的 Java 对象 POJO,供以后测试。
@Data
public class Staff {
private String name;
private int age;
private String[] position; // Array
private List skills; // List
private Map salary; // Map
}
4. Java 对象转 JSON
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("D:\code\FileUpload_GridFsTepmplate-main\src\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("mkyong");
staff.setAge(38);
staff.setPosition(new String[]{"Founder", "CTO", "Writer"});
Map salary = 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;
}
}
输出:D:codeFileUpload_GridFsTepmplate-mainsrcstaff.json
{"name":"mkyong","age":38,"position":["Founder","CTO","Writer"],"skills":["java","python","node","kotlin"],"salary":{"2018":14000,"2012":12000,"2010":10000}}
终端:
{"name":"mkyong","age":38,"position":["Founder","CTO","Writer"],"skills":["java","python","node","kotlin"],"salary":{"2018":14000,"2012":12000,"2010":10000}}
{
"name" : "mkyong",
"age" : 38,
"position" : [ "Founder", "CTO", "Writer" ],
"skills" : [ "java", "python", "node", "kotlin" ],
"salary" : {
"2018" : 14000,
"2012" : 12000,
"2010" : 10000
}
}
5. JSON 到 Java 对象
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("D:\code\FileUpload_GridFsTepmplate-main\src\staff.json"), Staff.class);
// JSON string to Java object
String jsonInString = "{"name":"mkyong","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=mkyong, age=37, position=null, skills=[java, python], salary=null)
{
"name" : "mkyong",
"age" : 37,
"position" : null,
"skills" : [ "java", "python" ],
"salary" : null
}



