Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用根数组绑定Rest模板_Java_Json_Spring_Jackson_Resttemplate - Fatal编程技术网

Java 使用根数组绑定Rest模板

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" } ] 我

我正在尝试使用Rest模板将JSON绑定到POJO

想象一下有一个
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获取它。