Spring REST Endpoint返回字符串而不是JSON

时间:2019-06-18 23:40:52

标签: rest spring-security

以下端点返回用户名作为字符串。

我将如何构造它以返回一个包含以该字符串作为其值的键的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()));
}

2 个答案:

答案 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;
}