Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.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 Id作为Json键的ApiResponse类_Java_Json_Spring_Api_Class - Fatal编程技术网

Java Id作为Json键的ApiResponse类

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

我正试图使用一些公共API中的数据,但我被困在关于这些数据设计的一些问题上。我用的是弹簧

我用经典的方式来做:

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(括号-ex
18497:{…}
)呢


正因为如此,我一直在尝试创建一个数据类,正如您所能想象的,它是一个公共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;

}