Spring @ResponseBody为原始类型生成无效的JSON

Oxm*_*ane 7 rest spring json jackson

我有一个来自REST API的代码,用于@ResponseBody返回结果,以及一个MappingJacksonHttpMessageConverter以JSON格式返回的代码.

这一切都适用于复杂的对象.对于像元int,booleanstring我得到不与{或[开始JSON.这不是有效的JSON.

我想知道返回这样一个简单类型的正确方法是什么?我应该将它封装在一个对象中{ Result : true }吗?

谢谢

代码示例:

@RequestMapping(
        value = "/login",
        method = RequestMethod.POST)
@ResponseBody
public boolean Login(String username, String password) {
    return authenticationService.authenticate(username, password);
}
Run Code Online (Sandbox Code Playgroud)

这将返回just true或者false是无效的JSON.它应该封装在一个对象或一个数组中(如果我理解正确的话).

Nim*_*sky 8

它只返回true或false.而你是正确的不是json.

它不能是json,因为它不是一个对象,它只是一个原语,所以它很好 - 它将被分配给成功处理程序中的javascript变量.

如果你返回一个布尔列表,你会得到一个数组:

[true,false,true]
Run Code Online (Sandbox Code Playgroud)

如果必须完全形成json,则不返回原语使用hashmap或自定义包装器对象.

public
@ResponseBody
Map<String, Boolean> getTrue() {
  Map<String, Boolean> map = new HashMap<String, Boolean>(1){{put("result", Boolean.TRUE);}};
  return map;
}
Run Code Online (Sandbox Code Playgroud)

返回hashmap可能是获取所需json的最简单,最好的方法:

{"result":true}
Run Code Online (Sandbox Code Playgroud)