Java Id作为Json键的ApiResponse类
我正试图使用一些公共API中的数据,但我被困在关于这些数据设计的一些问题上。我用的是弹簧 我用经典的方式来做:Java Id作为Json键的ApiResponse类,java,json,spring,api,class,Java,Json,Spring,Api,Class,我正试图使用一些公共API中的数据,但我被困在关于这些数据设计的一些问题上。我用的是弹簧 我用经典的方式来做: private ResponseEntity<ApiResponse> getVehicules() { final String methodUri = "/vehicules"; RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeade
private ResponseEntity<ApiResponse> getVehicules() {
final String methodUri = "/vehicules";
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
HttpEntity<String> entity = new HttpEntity<String>("parameters", headers);
return restTemplate.exchange(apiUri + methodUri, HttpMethod.GET, entity, ApiResponse.class);
}
那么,我如何管理类中的id(括号-ex18497:{…}
)呢
正因为如此,我一直在尝试创建一个数据类,正如您所能想象的,它是一个公共API,而不是我的,因此我无法更改这方面的任何内容。从JSON构建java类的最简单、最快的方法是使用一个模式映射器,如下图所示: 它直接从JSON生成java类,还允许您指定许多不同的选项,例如应该生成的注释类型。这种奇怪的JSON(在字段名中使用动态信息)很难理解如何读取。但解决办法很简单 您需要在
ApiResponse
类上使用Map
,如:
class ApiResponse {
// other fields
@JsonProperty("data")
private Map<String, VehicleResponse> vehicles;
}
类响应{
//其他领域
@JsonProperty(“数据”)
私人地图车;
}
vehiclerresponse
是一个普通类,具有id
、name
、nation
字段
因此,地图
车辆
将具有As键
的18497
(等)和As值
车辆响应中有关车辆的信息(id、名称、国家)数据将是地图。声明这是nt有效的JSON。对象中的键必须是双引号内的字符串。您不需要任何特定的反序列化程序。Jackson知道如何反序列化JSON,因为该类型位于字段的泛型类型中。
class ApiResponse {
// other fields
@JsonProperty("data")
private Map<String, VehicleResponse> vehicles;
}