如何将JSON字符串转换为Java对象列表?

2022-08-31 13:27:21

这是我的JSON数组:-

[ 
    {
        "firstName" : "abc",
        "lastName" : "xyz"
    }, 
    {
        "firstName" : "pqr",
        "lastName" : "str"
    } 
]

我在我的 String 对象中有这个。现在我想把它转换成Java对象,并存储在Java对象列表中。例如,在学生对象中。我正在使用下面的代码将其转换为Java对象列表: -

ObjectMapper mapper = new ObjectMapper();
StudentList studentList = mapper.readValue(jsonString, StudentList.class);

我的列表类是:-

public class StudentList {

    private List<Student> participantList = new ArrayList<Student>();

    //getters and setters
}

我的学生对象是: -

class Student {

    String firstName;
    String lastName;

    //getters and setters
}

我在这里错过了什么吗?我得到以下例外: -

Exception : com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of com.aa.Student out of START_ARRAY token

答案 1

您正在要求 Jackson 解析 .告诉它解析一个(学生)。由于 是 泛型 的,因此通常使用类型引用StudentListListList

List<Student> participantJsonList = mapper.readValue(jsonString, new TypeReference<List<Student>>(){});

答案 2

对于任何寻找答案的人:

1.将库添加到您的构建工具中,如Gradle或Mavenjackson-databind

2.in 您的代码:

ObjectMapper mapper = new ObjectMapper();

List<Student> studentList = new ArrayList<>();

studentList = Arrays.asList(mapper.readValue(jsonStringArray, Student[].class));