Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.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 以下划线(“U id”)开头的属性的JSON反序列化无效_Java_Json_Spring - Fatal编程技术网

Java 以下划线(“U id”)开头的属性的JSON反序列化无效

Java 以下划线(“U id”)开头的属性的JSON反序列化无效,java,json,spring,Java,Json,Spring,发布问题,因为我无法找到以下问题的解决方案 我们使用的第三方REST服务之一返回响应类似于 {“\u id”:“d55eb7c0”, “应用程序类型”:“测试”, “应用程序ID”:“uxhJ1hcT1F8bpL3xAWvTjsymNcd1RArv”, “说明”:“一些说明”} 尝试将“\u id”属性映射为,以遵循正确的java bean命名 @JsonProperty("_id") private String id; 这将导致以下错误 org.springframework.web.cl

发布问题,因为我无法找到以下问题的解决方案

我们使用的第三方REST服务之一返回响应类似于
{“\u id”:“d55eb7c0”,
“应用程序类型”:“测试”,
“应用程序ID”:“uxhJ1hcT1F8bpL3xAWvTjsymNcd1RArv”,
“说明”:“一些说明”}

尝试将“\u id”属性映射为,以遵循正确的java bean命名

@JsonProperty("_id")
private String id;
这将导致以下错误

org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [class ] and content type [application/json;charset=utf-8]
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:109)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:917)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:901)
如果字段名为
私有字符串\u idjson响应是反序列化的,没有任何问题。但我不想在我们的应用程序中命名以“u”开头的字段。
我们正在使用Jackson-2.7.3和SpringRESTTemplate进行REST调用

使用端点的实现。这是一个使用SpringRESTTemplate的简单GET调用

HttpEntity requestEntity=新的HttpEntity(httpHeaders);
返回restemplate.exchange(authorizationProperties.getEndpoint()+“/roles”,HttpMethod.GET,requestEntity,new ParameterizedTypeReference(){})


提前感谢。

我想您需要在访问器方法上应用注释,而不是字段本身:

   private String id;

   @JsonProperty("_id")
   public String getId() {
      return this.id;
   }
   public void setId(String i) {
      this.id = i;
   }

我想您需要在访问器方法上应用注释,而不是字段本身:

   private String id;

   @JsonProperty("_id")
   public String getId() {
      return this.id;
   }
   public void setId(String i) {
      this.id = i;
   }

这看起来不像JSON的问题。很可能您缺少了HttpMessageConverter

尝试添加此依赖项

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.8.3</version>
</dependency>

com.fasterxml.jackson.core
杰克逊数据绑定
2.8.3

这看起来不像JSON的问题。很可能您缺少了HttpMessageConverter

尝试添加此依赖项

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.8.3</version>
</dependency>

com.fasterxml.jackson.core
杰克逊数据绑定
2.8.3

No不起作用。我已经在字段级别为正在工作的其他字段使用@JsonProperty。我注意到只有以“\u1”下划线开头的字段存在问题。否不起作用。我已经在字段级别为正在工作的其他字段使用@JsonProperty。我注意到只有以“u”下划线开头的字段存在问题。我指的是使用请求正文的控制器,以便它可以将输入Json字符串映射到您定义的POJO。@LHCHIN如果我没有错,正文-Json字符串映射到我定义的POJO是在返回restTemplate.exchange(authorizationProperties.getEndpoint()+“/roles”、HttpMethod.GET、requestEntity、new ParameterizedTypeReference(){});我正在调用第三部分端点,它返回带有“\u id”的JSON字符串“属性。我指的是使用请求正文的控制器,以便它可以将输入Json字符串映射到您定义的POJO。@LHCHIN如果我没有错,正文-Json字符串映射到我定义的POJO,返回restTemplate.exchange(authorizationProperties.getEndpoint()+”/roles”,HttpMethod.GET,requestEntity,新参数化类型引用(){});我正在调用第三部分端点,它返回带有“_id”属性的JSON字符串。已经添加了jackson数据绑定依赖项“compile'com.fasterxml.jackson.core:jackson数据绑定:2.7.3”。“将升级到2.8.3并检查。尝试手动将消息转换器注册到rest模板列表>();MappingJackson2HttpMessageConverter=新的MappingJackson2HttpMessageConverter();setSupportedMediaTypes(Collections.singletonList(MediaType.APPLICATION_JSON));messageConverters.add(converter);restemplate.setMessageConverters(messageConverters);已添加jackson数据绑定依赖项“compile'com.fasterxml.jackson.core:jackson数据绑定:2.7.3.”将升级到2.8.3并检查。尝试手动将消息转换器注册到rest模板列表>();MappingJackson2HttpMessageConverter=新的MappingJackson2HttpMessageConverter();setSupportedMediaTypes(Collections.singletonList(MediaType.APPLICATION_JSON));messageConverters.add(converter);restemplate.setMessageConverters(messageConverters);