我在使用 Jackson 在 Spring Boot 1.5 应用程序中将 JSON 反序列化为 Java 对象时遇到了一些麻烦。
如下所示,JSON 响应是一个由单个 JSON 对象和一些嵌套属性组成的数组:
[
{
"deploymentProject": {
"id": 57966596,
"name": "MyApp 6.3"
},
"environmentStatuses": [{
"environment": {
"id": 57245736,
"name": "Dev1",
"deploymentProjectId": 57966596
},
"deploymentResult": {
"deploymentVersionName": "App-51",
"id": 59769040
}
},
{
"environment": {
"id": 57245737,
"name": "Dev2",
"deploymentProjectId": 57966596
},
"deploymentResult": {
"deploymentVersionName": "App-51",
"id": 59769041
}
}
]
}
]
ResultData.java
我不关心 deploymentProject
属性,因此我只在 ResultData
中包含 environmentStatuses
。
@JsonIgnoreProperties(ignoreUnknown = true)
public class ResultData {
private EnvironmentStatus[] environmentStatuses;
// Getters and setters omitted
}
EnvironmentStatus.java
@JsonIgnoreProperties(ignoreUnknown = true)
public class EnvironmentStatus {
private Environment environment;
private DeploymentResult deployment;
// Getters and setters omitted
}
Environment.java
@JsonIgnoreProperties(ignoreUnknown = true)
public class Environment {
private long id;
private String name;
private String deploymentProjectId;
//Getters and setters omitted
}
DeploymentResult.java
@JsonIgnoreProperties(ignoreUnknown = true)
public class DeploymentResult {
private long id;
private String deploymentVersionName;
// Getters and setters omitted
}
当我在服务类中调用 RestTemplate 时,environmentStatuses
数组为 null
:
Service.java
ResponseEntity<List<ResultData>> response = restTemplate.exchange(uriBuilder.toUriString(),
HttpMethod.GET, null, new ParameterizedTypeReference<List<ResultData>>() {});
return response.getBody();
最佳答案
私有(private) DeploymentResult 部署;
是下一期..
如果您希望在代码中使用此名称,则需要使用 json 结构名称进行注释。或者如果没有命名为deploymentResult
关于java - 使用 RestTemplate 和 Jackson 反序列化对 Java 的 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49741543/