什么是jackson
Java常见的Json类库。
jar包引入
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.1</version>
</dependency>
实体类
public class Student {
private String id;
private String name;
private int age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
public class Classes {
private String id;
private String name;
private List<Student> studentList;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Student> getStudentList() {
return studentList;
}
public void setStudentList(List<Student> studentList) {
this.studentList = studentList;
}
@Override
public String toString() {
return "Classes [id=" + id + ", name=" + name + ", studentList=" + studentList + "]";
}
}
转换操作
ObjectMapper是JSON操作的核心,Jackson的所有JSON操作都是在ObjectMapper中实现。
ObjectMapper是线程安全的。
public class APP {
public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
Student student = new Student();
student.setId("1");
student.setName("张三");
student.setAge(20);
List<Student> studentList = new ArrayList<Student>();
studentList.add(student);
Classes classes = new Classes();
classes.setId("1");
classes.setName("一班");
classes.setStudentList(studentList);
// java对象转为json
ObjectMapper mapper = new ObjectMapper();
String classJson = mapper.writeValueAsString(classes);
System.out.println(classJson);
// json转为java对象
String json = "{\"id\":\"1\",\"name\":\"一班\",\"studentList\":[{\"id\":\"1\",\"name\":\"张三\",\"age\":20}]}";
Classes classes2 = mapper.readValue(json, Classes.class);
System.out.println(classes2);
// json转换为list
String jsonList = "[{\"id\":\"1\",\"name\":\"张三\",\"age\":20}]";
studentList = mapper.readValue(jsonList, new TypeReference<List<Student>>() {});
System.out.println(studentList);
// json转为map
JavaType jvt = mapper.getTypeFactory().constructParametricType(HashMap.class,String.class,Object.class);
Map<String, Object> map = mapper.readValue(classJson, jvt);
System.out.println(map);
//结果
//{"id":"1","name":"一班","studentList":[{"id":"1","name":"张三","age":20}]}
//Classes [id=1, name=一班, studentList=[Student [id=1, name=张三, age=20]]]
//[Student [id=1, name=张三, age=20]]
//{name=一班, studentList=[{id=1, name=张三, age=20}], id=1}
}
}