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

新手上路,请多包涵

这是我的 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

原文由 Nitesh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 799
2 个回答

您要求杰克逊解析 StudentList 。告诉它解析 List (学生)。由于 List 是通用的,您通常会使用 TypeReference

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

原文由 Manos Nikolaidis 发布,翻译遵循 CC BY-SA 4.0 许可协议

对于任何正在寻找答案的人:

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

2.在您的代码中:

 ObjectMapper mapper = new ObjectMapper();

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

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

原文由 Sobhan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题