我知道这是非常基本的,但是当格式如下时,我在使用 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/