使用ObjectMapper把Json转换为复杂的实体类
使用ObjectMapper把JSON转换为复杂的实体类的方法如下:
1.引入ObjectMapper库
在项目中引入ObjectMapper依赖即可,可以使用Maven或Gradle等构建工具。
Maven:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
Gradle:
implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.4'
2.创建实体类
创建需要转换的实体类,并在其中定义变量名与JSON中的键名相同的变量。
public class Person {
private String name;
private int age;
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;
}
}
3.将JSON解析成需要转换的实体类
使用ObjectMapper类的方法把JSON解析成需要转换的实体类。
ObjectMapper objectMapper = new ObjectMapper();
Person person = objectMapper.readValue(json, Person.class);
其中,json是需要解析的JSON字符串,Person.class是需要转换成的实体类的类型。
4.示例说明
下面是JSON字符串解析成Person实体类的代码示例:
String json = "{ \"name\": \"Alice\", \"age\": 20 }";
ObjectMapper objectMapper = new ObjectMapper();
Person person = objectMapper.readValue(json, Person.class);
System.out.println(person.getName() + ", " + person.getAge());
输出结果为:
Alice, 20
另外,如果JSON中包含List或Map等复杂数据类型,也可以通过类似定义实体类的方式解析。例如,下面是JSON字符串解析成包含List的实体类的代码示例:
public class People {
private List<Person> personList;
public List<Person> getPersonList() {
return personList;
}
public void setPersonList(List<Person> personList) {
this.personList = personList;
}
}
解析JSON字符串:
String json = "{ \"personList\": [{ \"name\": \"Alice\", \"age\": 20 }, { \"name\": \"Bob\", \"age\": 25 }] }";
ObjectMapper objectMapper = new ObjectMapper();
People people = objectMapper.readValue(json, People.class);
System.out.println(people.getPersonList().get(0).getName() + ", " + people.getPersonList().get(0).getAge());
System.out.println(people.getPersonList().get(1).getName() + ", " + people.getPersonList().get(1).getAge());
输出结果为:
Alice, 20
Bob, 25