让我们看看下面这个简单的测试控制器(与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
为什么会这样?可以配置吗?是虫子吗?还是一个我不懂的特征?
当您返回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