【问题标题】:org.springframework.http.converter.HttpMessageNotWritableException: No converter found for return value of type: class org.json.JSONObjectorg.springframework.http.converter.HttpMessageNotWritableException:没有找到类型的返回值的转换器:类 org.json.JSONObject
【发布时间】:2019-09-18 23:10:07
【问题描述】:

我使用Spring开发rest api。

所以我的rest api调用了另一个api。例如 Oracle ORDS。

private String processBackground(String object, String url, HttpMethod templete) {
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        logger.warn(object);
        HttpEntity request = new HttpEntity<>(object, headers);
        logger.info(request.toString());

        ResponseEntity<String> responseEntity;
        responseEntity = restTemplate.exchange(url, templete, request, String.class);

        logger.info(responseEntity.getBody());
        return responseEntity.getBody();
    }

在我看来,这部分出错了。

错误信息

{
    "timestamp": "2019-04-30T09:18:54.586+0000",
    "status": 500,
    "error": "Internal Server Error",
    "message": "No converter found for return value of type: class org.json.JSONObject",
    "path": "/mainrequest"
}

帮帮我! 谢谢;)

【问题讨论】:

  • 如果知道接收到的对象的结构,可以将restTemplate.exchange(url, templete, request, String.class)替换成ResponseEntity&lt;MyObject&gt; destObject=restTemplate.exchange(url, templete, request, MyObject.class),然后返回

标签: json spring


【解决方案1】:

此消息意味着您的 spring 上下文中没有 HttpMessageConverter 能够为 MediaType application/json 处理 JSONObject 到 String 的转换。

看看这篇关于消息转换器以及如何实现你自己的帖子:https://www.baeldung.com/spring-httpmessageconverter-rest

快速修复可能是期望响应实体主体为 JSONObject,因为您应该拥有默认的 JSON HttpMessageConverter,如下所示:

ResponseEntity<JSONObject> responseEntity;

【讨论】:

    猜你喜欢
    • 2019-04-08
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    相关资源
    最近更新 更多