- 提前说结果,可以深度转换对象和数组JSON字符串。
1 依赖
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.25</version>
</dependency>
2 实体类
public class Person {
private String name;
private int age;
private String sex;
private Date birthDate;
private String avatar;
private String car;
private List<Pet> petList;
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;
}
public Date getBirthDate() {
return birthDate;
}
public void setBirthDate(Date birthDate) {
this.birthDate = birthDate;
}
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
public List<Pet> getPetList() {
return petList;
}
public void setPetList(List<Pet> petList) {
this.petList = petList;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getCar() {
return car;
}
public void setCar(String car) {
this.car = car;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
", birthDate=" + birthDate +
", avatar='" + avatar + '\'' +
", car='" + car + '\'' +
", petList=" + petList +
'}';
}
}
public class Car {
private String carName;
private String type;
public String getCarName() {
return carName;
}
public void setCarName(String carName) {
this.carName = carName;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
@Override
public String toString() {
return "Car{" +
"carName='" + carName + '\'' +
", type='" + type + '\'' +
'}';
}
}
public class Pet {
private String petName;
private String category;
public Pet() {
}
public Pet(String petName, String category) {
this.petName = petName;
this.category = category;
}
public String getPetName() {
return petName;
}
public void setPetName(String petName) {
this.petName = petName;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
@Override
public String toString() {
return "Pet{" +
"petName='" + petName + '\'' +
", category='" + category + '\'' +
'}';
}
}
3 测试用例
{
"name": "张三",
"age": 16,
"sex": "男"
}
[
{
"name": "张三",
"age": 16,
"sex": "男"
},
{
"name": "李四",
"age": 18,
"sex": "女"
}
]
{
"name": "李四",
"age": 18,
"sex": "女",
"car": {
"carName": "桑塔纳",
"type": "大众"
}
}
{
"name": "李四",
"age": 18,
"sex": "女",
"car": {
"carName": "桑塔纳",
"type": "大众"
},
"petList": [
{
"petName": "乐乐",
"category": "狗"
},
{
"petName": "欢欢",
"category": "猫"
}
]
}
4 测试
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.alibaba.fastjson2.JSONReader;
import com.yunfeng.generatepdfweb.domain.Person;
import java.util.List;
public class TestFastJson2 {
private static final String jsonObjectStr = "{\"name\": \"张三\",\"age\": 16,\"sex\": \"男\"}";
private static final String jsonArrayStr = "[\n" +
"{\"name\": \"张三\",\"age\": 16,\"sex\": \"男\"},\n" +
"{\"name\": \"李四\",\"age\": 18,\"sex\": \"女\"}\n" +
"]";
private static final String deepCopyObject = "{\n" +
" \"name\": \"张三\",\n" +
" \"age\": 16,\n" +
" \"sex\": \"男\",\n" +
" \"car\": {\n" +
" \"carName\": \"桑塔纳\",\n" +
" \"type\": \"大众\"\n" +
" }\n" +
"}";
private static final String deepCopyList = "{\n" +
" \"name\": \"张三\",\n" +
" \"age\": 16,\n" +
" \"sex\": \"男\",\n" +
" \"car\": {\n" +
" \"carName\": \"桑塔纳\",\n" +
" \"type\": \"大众\"\n" +
" },\n" +
" \"petList\": [\n" +
" {\n" +
" \"petName\": \"乐乐\",\n" +
" \"category\": \"狗\"\n" +
" }, \n" +
" {\n" +
" \"petName\": \"欢欢\",\n" +
" \"category\": \"猫\"\n" +
" }\n" +
" ]\n" +
"}";
public static void main(String[] args) {
JSONObject jsonObject = JSONObject.parseObject(jsonObjectStr);
Person person = jsonObject.toJavaObject(Person.class, JSONReader.Feature.IgnoreAutoTypeNotMatch);
System.out.println("person = " + person);
Person person1 = JSONObject.parseObject(jsonObjectStr, Person.class);
System.out.println("person1 = " + person1);
JSONArray jsonArray = JSONArray.parse(jsonArrayStr);
List<Person> personList = jsonArray.toJavaList(Person.class, JSONReader.Feature.IgnoreAutoTypeNotMatch);
System.out.println("personList = " + personList);
List<Person> personList1 = JSONArray.parseArray(jsonArrayStr, Person.class);
System.out.println("personList1 = " + personList1);
Person deepPerson = JSONObject.parseObject(deepCopyObject, Person.class);
System.out.println("deepPerson = " + deepPerson);
Person deepPerson2 = JSONObject.parseObject(deepCopyList, Person.class);
System.out.println("deepPerson2 = " + deepPerson2);
}
}
5 结果
person = Person{
name='张三', age=16, sex='男', birthDate=null, avatar='null', car='null', petList=null}
person1 = Person{
name='张三', age=16, sex='男', birthDate=null, avatar='null', car='null', petList=null}
personList = [Person{
name='张三', age=16, sex='男', birthDate=null, avatar='null', car='null', petList=null}, Person{
name='李四', age=18, sex='女', birthDate=null, avatar='null', car='null', petList=null}]
personList1 = [Person{
name='张三', age=16, sex='男', birthDate=null, avatar='null', car='null', petList=null}, Person{
name='李四', age=18, sex='女', birthDate=null, avatar='null', car='null', petList=null}]
deepPerson = Person{
name='张三', age=16, sex='男', birthDate=null, avatar='null', car='{"carName":"桑塔纳","type":"大众"}', petList=null}
deepPerson2 = Person{
name='张三', age=16, sex='男', birthDate=null, avatar='null', car='{"carName":"桑塔纳","type":"大众"}', petList=[Pet{
petName='乐乐', category='狗'}, Pet{
petName='欢欢', category='猫'}]}