我有一个来自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);
}
Run Code Online (Sandbox Code Playgroud)
这将返回just true或者false是无效的JSON.它应该封装在一个对象或一个数组中(如果我理解正确的话).
如RFC 7159中所述,字符串等原始类型本身就是有效的json消息.但字符串必须用双引号括起来.
所以,字符串:
测试
在json是:
"测试"
如果我发送一个正确引用的POST正文
"测试"
到以下代码
@RestController
@RequestMapping("test")
public class TestController{
@RequestMapping(method=RequestMethod.POST)
public ResponseEntity<?> userLogout(@RequestBody final String input) {
System.out.println(input);
return new ResponseEntity<>("OK", HttpStatus.OK);
}
}
Run Code Online (Sandbox Code Playgroud)
输入变量的值是
"测试"
代替
测试
这将是正确的价值.
此外,请求的输出是
好
代替
"好"
这将是正确的输出.
任何想法如何强制Spring正确处理字符串?
请求确实有正确的标头:
Content-Type:application/json; 字符集= UTF-8
并且在RequestMapping注释中添加produce ="application/json"没有帮助.
(只是旁注:如果您使用改装或Gson进行通信,他们会正确处理字符串.)