有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

我创建了一个具有id、名称和位置的类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>>() {});

共 (1) 个答案

  1. # 1 楼答案

    您应该将List<Person>包装在另一个响应对象中,该对象有一个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();