java - 反序列化json数组,其中属性值为数组java

标签 java arrays json jackson deserialization

我知道这是非常基本的,但是当格式如下时,我在使用 jackson 反序列化 json 时遇到问题:

我创建了一个包含 id、name 和 place 的 Person 类,并尝试使用 jackson(使用 @JsonProperty 注释)读取 API 调用的结果,但是当我调试时,persons 变量为 null:

 json body:
  { people:[  
   {  
    "id":"0",
    "name":"Bob",
    "place":"Colorado",
   },
   {  
    "id":"1",
    "name":"John",
    "place":"Chicago",
   },
   {  
    "id":"2",
    "name":"Marry",
    "place":"Miami",
   }
 ]}


 RequestEntity<Void> reqEntity = RequestEntity.get(new URI(url))
                .accept(MediaType.APPLICATION_JSON)
                .build();

 ResponseEntity<List<Person>> persons = template.exchange(reqEntity, new ParameterizedTypeReference<List<Person>>() {});

最佳答案

你应该包裹你的 List<Person>在另一个 Response 对象中,该对象具有 people字段,包含您的列表:

public class PeopleResponse {
    private List<Person> people;

    // getter and setter
}

然后您可以更改您的 ResponseEntity据此:

ResponseEntity<PeopleResponse> response = template.exchange(reqEntity, new ParameterizedTypeReference<PeopleResponse>() {});
List<Person> people = response.getBody().getPeople();

关于java - 反序列化json数组,其中属性值为数组java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57681851/

相关文章:

json - 有没有一种优雅的方式通过 CQL (Cassandra) 执行 JSON 更新?

json - Go JSON解码错误行为如何工作?

java - Context.startForegroundService() 然后没有调用 Service.Foreground

java - 缓存实例

java - Playframework 的内存使用情况

c++ - 在读取文本文件 C++ 时转义包含特殊字符的一行

java - Spring Security 两个authenticationSuccessHandler

java - 用静态方法反转数组 VS static void?

arrays - 如何从 VB.NET 中的数据集填充数组

json - Alamofire 错误域=NSURLErrorDomain 代码=-999 "cancelled"