【发布时间】:2014-06-28 04:44:25
【问题描述】:
我们来看看下面这个简单的测试控制器(与 Spring 4.0.3 一起使用):
@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。调用第一个控制器方法确实会返回以下 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"]
但第二个控制器方法返回的字符串不带引号,它不是有效的 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
为什么会这样?可以配置吗?它是一个错误吗?还是我不理解的功能?
【问题讨论】:
-
查看在杰克逊转换器之前注册的
StringHttpMessageConverter。
标签: java json spring spring-mvc jackson