相关疑难解决方法(0)

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

我有一个来自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.它应该封装在一个对象或一个数组中(如果我理解正确的话).

rest spring json jackson

7
推荐指数
1
解决办法
9457
查看次数

如何使RestController正确处理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进行通信,他们会正确处理字符串.)

java spring json

4
推荐指数
1
解决办法
727
查看次数

标签 统计

json ×2

spring ×2

jackson ×1

java ×1

rest ×1