我有一个来自 REST API 的代码,它使用 @ResponseBody
返回结果,和一个 MappingJacksonHttpMessageConverter
以 JSON 格式返回它。
对于复杂的对象,这一切都很好。
对于像 int
这样的原语, boolean
和 string
我得到一个不以 { 或 [ 开头的 JSON。
这不是有效的 JSON。
我想知道返回这样的简单类型的正确方法是什么?
我应该将它封装在一个对象中,例如 { Result : true }
?
谢谢
代码示例:
@RequestMapping(
value = "/login",
method = RequestMethod.POST)
@ResponseBody
public boolean Login(String username, String password) {
return authenticationService.authenticate(username, password);
}
这将仅返回
true
或 false
这是一个无效的 JSON。它应该封装在一个对象或一个数组中(如果我理解正确的话)。
最佳答案
它只返回真或假。你是对的,这不是 json。
它不能是 json,因为它不是一个对象,它只是一个原语,所以它原样很好 - 它将被分配给成功处理程序中的 javascript 变量。
如果你返回一个 bool 值列表,你会得到一个数组:
[true,false,true]
如果您必须具有完全形成的 json,请不要返回原语,请使用 hashmap 或自定义包装器对象。
public
@ResponseBody
Map<String, Boolean> getTrue() {
Map<String, Boolean> map = new HashMap<String, Boolean>(1){{put("result", Boolean.TRUE);}};
return map;
}
返回 hashmap 可能是获取所需 json 的最简单和最好的方法:
{"result":true}
关于json - Spring @ResponseBody 为原始类型生成无效的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12911069/