java - 反序列化属性值为数组java的json数组
问题描述
我知道这是非常基本的,但是当格式如下时,我在使用杰克逊反序列化 json 时遇到问题:
我创建了一个带有 id、name 和 place 的类 Person,并尝试使用 jackson(使用 @JsonProperty 注释)从 API 调用中读取结果,但是当我调试 people 变量时为 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();
推荐阅读
- apache-kafka - 开源多区域、一致的至少一次 FIFO 解决方案:专用队列(例如 Kafka)与数据库(例如 Cassandra、RethinkDB)?
- angular - Angular 8嵌套路由和多个路由器插座不起作用
- javascript - 使用 JavaScript 将 DropDown 值参数化为 URL?
- firebase - Firestore 数据建模 - Dialogflow 上的 ChatBOT
- android - 如何使用 WiFi 连接在 Android 应用程序中接收传感器的数据?
- c++ - 函数作为具有默认值的参数
- sql - Postgres - 当流派列具有逗号分隔值“动作、喜剧、....惊悚片...”时,获取每种流派的计数
- php - 为什么不能导入备份站点 WordPress?插件一体化迁移
- sql - 从 Netezza 数据库创建 SAS 数据集时,SAS“CLI 游标扩展提取错误:数值超出范围”
- xslt - 选择 XSLT1.0 或 2.0 后连接