Java 使用根数组绑定Rest模板
我正在尝试使用Rest模板将JSON绑定到POJO 想象一下有一个Java 使用根数组绑定Rest模板,java,json,spring,jackson,resttemplate,Java,Json,Spring,Jackson,Resttemplate,我正在尝试使用Rest模板将JSON绑定到POJO 想象一下有一个SpaceX类和一个Rocket类,而SpaceX类有一个List属性。我使用@JsonProperty注释让Rest模板自动绑定Rocket对象中的“Rocket ID”和“name” 我的JSON文件以数组形式启动,如下所示: [ { "Rocket ID": "1", "name": "A" }, { "Rocket ID": "2", "name": "B" } ] 我
SpaceX
类和一个Rocket
类,而SpaceX
类有一个List
属性。我使用@JsonProperty
注释让Rest模板自动绑定Rocket
对象中的“Rocket ID”和“name”
我的JSON文件以数组形式启动,如下所示:
[
{
"Rocket ID": "1",
"name": "A"
},
{
"Rocket ID": "2",
"name": "B"
}
]
我可以使用JSON文件并手动填写列表,如下所示:
public <T> List<T> createObjectsFromJSON(Class<T[]> responseType) {
ResponseEntity<T[]> responseEntity = restTemplate.exchange(URL, HttpMethod.GET, request, responseType);
T[] objects = responseEntity.getBody();
List<T> list = Arrays.asList(objects);
return list;
}
公共列表createObjectsFromJSON(类响应类型){
ResponseEntity ResponseEntity=restemplate.exchange(URL,HttpMethod.GET,request,responseType);
T[]objects=responseEntity.getBody();
List=Arrays.asList(对象);
退货清单;
}
但是我想创建一个SpaceX
对象,让Rest模板自动填充列表。
对于如何做这件事的答案我不太明白。我无法告诉Rest模板通过@JsonProperty
绑定列表,因为没有名称。如果无法更改JSON结构,则必须编写自定义序列化和反序列化逻辑。您可以使用@JsonCreator和@JsonValue注释:
@JsonCreator注释用于优化构造函数/工厂
用于反序列化。当我们需要反序列化时,它非常有用
某些JSON与我们需要获取的目标实体不完全匹配
@JsonValue指示应用于序列化的单个方法
整个实例
或@JsonSerialize和@JsonSerialize:
@JsonSerialize用于指示将使用自定义序列化程序
马歇尔实体
@JsonDeserialize用于指示自定义反序列化程序的使用
本文包含更多详细信息和示例:您的意思是在不更改json结构的情况下,您想接受SpaceX对象而不是列表吗?@pvpkiran是的,json结构无法编辑,因为我正在使用API获取它。