以下端点返回用户名作为字符串。
我将如何构造它以返回一个包含以该字符串作为其值的键的json对象(例如{“ user”:“ joeuser”}?
@GetMapping(value = "/getUser", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> getUser() {
HttpHeaders responseHeaders = new HttpHeaders();
CustomUserAuthentication authentication = (CustomUserAuthentication) SecurityContextHolder.getContext().getAuthentication();
return ResponseEntity.ok().headers(responseHeaders).body(String.valueOf(authentication.getPrincipal()));
}
答案 0 :(得分:1)
使用一些Json库(例如gson),构建Json对象,然后将其返回到正文中而不是String中。确保响应内容类型为application / json
您还可以手动构建看起来像Json但内容必须与上面相同的String。
答案 1 :(得分:1)
Spring可以做您想要的事情,但是您需要返回Spring需要编组为JSON的内容。根据我先前的答案:https://stackoverflow.com/a/30563674/48229
@RequestMapping(value = "/json", method = RequestMethod.GET, produces = "application/json")
@ResponseBody
public Map<String, Object> bar() {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("test", "jsonRestExample");
return map;
}