簡體   English   中英

Spring RestTemplate無法解析JSON響應

[英]Spring RestTemplate unable to parse json response

如果我將POST的響應解析為字符串,則效果很好:

ResponseEntity<String> stringResponse = restTemplate.postForEntity(DruidClient.QUERY_HOST + "/druid/v2", query, String.class);
String valueResults = stringResponse.getBody();
DruidValueResult[] results = new ObjectMapper().readValue(valueResults, DruidValueResult[].class);

但是,如果我告訴spring直接解析響應:

ResponseEntity<DruidValueResult[]> results = restTemplate.postForEntity(DruidClient.QUERY_HOST + "/druid/v2", query, DruidValueResult[].class);

我收到以下錯誤:

org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [class [Lcom.dripstat.metricprocessor.druid.DruidValueResult;] and content type [application/smile]
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:108)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:788)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:773)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:553)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:506)
at org.springframework.web.client.RestTemplate.postForEntity(RestTemplate.java:361)

spring為什么無法直接解析生成的json?

SpringSource博客

傳遞給方法getForObject(),postForLocation()和put()並從中返回的對象,並通過HttpMessageConverters從HTTP響應轉換為HTTP請求。 默認情況下,已注冊用於主要mime類型和Java類型的轉換器,但是您也可以編寫自己的轉換器並將其插入RestTemplate中。 在下面的示例中,我將向您展示如何完成此操作。

我想對於postForEntity()也是一樣的 ,所以您可能需要為特定的mime類型添加一個消息轉換器,因為默認情況下它沒有帶殼:

<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
  <property name="messageConverters">
    <list>
      <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
        <property name="supportedMediaTypes" value="application/smile" />
        <property name="supportedMediaTypes" value="text/javascript" />
      </bean>
    </list>
  </property>
</bean>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM