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

spring rest控制器中作为JSON返回值的简单字符串

诸葛皓
2023-03-14

让我们看看下面这个简单的测试控制器(与Spring 4.0.3一起使用):

java prettyprint-override">@RestController
public class TestController
{
    @RequestMapping("/getList")
    public List<String> getList()
    {
        final List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        return list;
    }

    @RequestMapping("/getString")
    public String getString()
    {
        return "Hello World";
    }
}

理论上,两个控制器方法都应该返回有效的JSON。调用第一个controller方法确实会返回以下JSON数组:

$ curl -i -H "Accept: application/json" http://localhost:8080/getList
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8

["1","2"]

但第二个controller方法返回不带引号的字符串,该字符串不是有效的JSON字符串:

$ curl -i -H "Accept: application/json" http://localhost:8080/getString
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8

Hello World

为什么会这样?可以配置吗?是虫子吗?还是一个我不懂的特征?

共有1个答案

班玉堂
2023-03-14

当您返回string对象时,Spring MVC将其解释为要放入响应体的内容,而不对其进行进一步修改。如果您想要一个实际的字符串作为JSON响应,您需要自己引用它,或者通过Jackson显式地运行它。

 类似资料:
  • 我的问题实质上是对这个问题的跟进。 在上面,Spring会将“hello world”添加到响应体中。如何将字符串作为JSON响应返回?我知道我可以加引号,但这感觉更像是一个黑客。 请提供任何例子来帮助解释这一概念。 注意:我不想直接写到HTTP响应体,我想返回JSON格式的字符串(我正在使用带有RestyGWT的控制器,它要求响应是有效的JSON格式)。

  • 我在Spring有Rest控制器。 控制器: 服务: 存储库: 实体: 目前当我在Postman(或浏览器)中使用方法@GetMap在获得JSON对象响应: 作为回应,我需要字符串格式的字段“id”,看起来像: 如何以字符串格式将JSON对象fielt“id”作为ObjectId返回?

  • 问题内容: 因此,我让我的JavaScript进行了Ajax调用,但是在控制器中,我不知道该怎么做才能将某些内容输出回JavaScript。 我收到错误消息是因为没有视图,但是显然没有视图,所以该怎么办? 问题答案: 为此,假设您要在数组中输出变量,然后使用方法将该数组传递给视图,然后创建一个view 。在该视图文件中,放完后可以使用,它应该输出json。 通用代码… /Controllers/M

  • 在Spring MVC框架中,当控制器返回接口类型时,Spring的消息转换器可以将返回值转换为适当的消息(如JSON)。 例如,当我调用“vehicle”api时,我可以得到一条JSON消息。 但是,网络流量的行为不同。当返回类型是一个单一的界面时,它只支持“内容类型:文本/事件流”。 在我看来,Webflux的行为令人不安。是虫子吗?我需要添加自定义MessageWriter来编码接口类型吗?

  • 问题内容: 我想从返回的JSON中排除密码字段。我正在使用NestJS和Typeorm。 针对此问题提供的解决方案不适用于我或NestJS。如果需要,我可以发布我的代码。还有其他想法或解决方案吗?谢谢。 问题答案: 我建议创建一个利用class-transformer库的拦截器: 然后,只需使用装饰器排除属性,例如:

  • 问题内容: 在我的开发服务器上,来自Laravel 5控制器的JSON响应以正确的类型显示数据。 例如 但是在生产服务器上,JSON响应作为字符串发送回。 开发和生产都安装了相同版本的PHP(5.6.11-1)。 关于什么可能导致这种行为的任何想法? 问题答案: 确保使用支持本机数据类型的 MySQL本机驱动程序 。 如果使用mysqlnd库,可以通过设置MYSQLI_OPT_INT_AND_FL