从弹簧控制器获取JSON

时间:2018-04-24 04:56:00

标签: java spring rest

我正在尝试从Spring Rest Controller获取格式为JSON的响应Body,我的代码是:

@ResponseBody
    @RequestMapping(value = "/userDetails", method = RequestMethod.GET, produces = "application/json")

    public UserInfo getUserDetails(Principal principal){
        return users.get(principal.getName());
    }

我的结果是:

响应{_body:“{id:001}”,状态:200,ok:true,statusText:“OK”,标题:标题,...}。

我怎样才能得到Json感谢的身体......

3 个答案:

答案 0 :(得分:3)

使用@RestController

@RestController
public class DemoController {
    @GetMapping("/userDetails")
    public UserInfo getUserDetails(Principal principal){
        return users.get(principal.getName());
    }

}

输出:

{"id": 001}

使用`@ RestController`注释

注意: Spring 4.0引入了@RestController,这是一个控制器的专用版本,它是一个便利注释,除了添加@Controller@ResponseBody注释之外什么也不做。通过使用@RestController注释对控制器类进行注释,您不再需要将@ResponseBody添加到所有请求映射方法中。默认情况下,@ResponseBody注释处于活动状态。点击此处了解更多信息。

@RestController = @Controller + @ResponseBody

答案 1 :(得分:0)

@RestController 公共类DemoController {

@RequestMapping(method = RequestMethod.POST,
        value = "userdetails",
        consumes = "application/json",
        produces = "application/json")
public UserInfo getUserDetails(@RequestBody Principal principal){
    return users.get(principal.getName());
}

}

其他方式解决

答案 2 :(得分:-1)

从方法中删除@ResponseBody注释。