当前位置: 首页 > 知识库问答 >
问题:

返回ResponseEntity的JSON

解沈义
2023-03-14
@RequestMapping(value = "so", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
ResponseEntity<String> so() {
    return new ResponseEntity<String>("This is a String", HttpStatus.OK);
}
This is a String

共有1个答案

陆昂然
2023-03-14

问题的根源在于Spring(通过ResponseEntity、RestController和/或ResponseBody)将使用字符串的内容作为原始响应值,而不是将字符串视为要编码的JSON值。即使控制器方法使用produces=mediatype.application_json_value,也是如此,正如这里的问题所示。

它本质上就像下面的区别:

// yields: This is a String
System.out.println("This is a String");

// yields: "This is a String"
System.out.println("\"This is a String\"");

第一个输出不能解析为JSON,但第二个输出可以。

import com.google.gson.Gson;

@RestController
public class MyController

    private static final Gson gson = new Gson();

    @RequestMapping(value = "so", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    ResponseEntity<String> so() {
        return ResponseEntity.ok(gson.toJson("This is a String"));
    }
}
 类似资料:
  • 我想在下面返回JSON。 {“名字”:“杰基”} 新来的春靴在这里。1天大。有没有合适的方法可以做到这一点?

  • 问题内容: 在控制器中,我创建json数组。如果我还可以的话: 但我需要返回JSON数组和HTTP状态代码: Eclipse在XXX行中看到错误: 如何返回json + http回复?我的工作代码用于返回一个json对象+ http状态代码: 问题答案: 现在我回来了。我不知道更好的解决方案,但是可以。

  • 我有一个Spring MVC方法,它返回。根据检索的特定数据,它有时需要向用户返回数据流。其他时候,它将返回流以外的东西,有时是重定向。我非常希望这是一个流,而不是字节数组,因为它可以很大。 目前,我使用以下代码片段返回流: 不幸的是,这不允许Spring数据实际填充响应中的HTTP头。这是有意义的,因为我的代码在Spring接收之前就写入了。 但它会引发此异常: 我可以通过直接设置上的所有内容来

  • 问题内容: 我有一个Spring MVC方法,返回一个。根据检索到的特定数据, 有时 需要将数据流返回给用户。其他时候,它将返回除流之外的其他内容,有时还会返回重定向。我绝对希望它是一个流而不是字节数组,因为它可能很大。 当前,我使用以下代码片段返回流: 不幸的是,这不允许Spring 数据实际填充响应中的HTTP标头。这是有道理的,因为我的代码在Spring接收之前写入了。 某种程度上让Spri

  • 我试图通过RESTendpoint将数据从一个服务器发送到另一个服务器: 服务器B启动此请求: 服务器A接收请求并返回文件: 因此,很明显,我必须将声明更改为: 或者到 然后错误消失了,但我丢失了HttpStatus。回复时是否有确认信息?这里的正确解决方案是什么?

  • 我试图返回一个列表,并将该响应重定向到我的模型类。 例如:如果我使用,它工作得很好,但我不想为每个模型编写响应方法。 方法 错误 出现错误(Type=内部服务器错误,状态=500)。创建名为“index”的bean时出错:调用init方法失败;嵌套异常为java.lang.ClassCastException:java.util.LinkedHashMap不能强制转换为com.xxx.Applic