【发布时间】:2018-09-19 08:37:57
【问题描述】:
我在使用 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();
【问题讨论】:
-
如果你使用
List<EnvironmentStatus>而不是数组会发生什么? -
@mavriksc 修复了环境属性谢谢。部署信息仍然为空。
标签: java json spring-boot jackson resttemplate