Spring REST Endpoint Возвращает строку вместо JSON - PullRequest
0 голосов
/ 19 июня 2019

Следующая конечная точка возвращает имя пользователя в виде строки.

Как бы я структурировал его так, чтобы он возвращал объект 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 ]

1 голос
/ 19 июня 2019

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;
}
1 голос
/ 19 июня 2019

Используя некоторую библиотеку Json (например, gson), создайте объект Json и верните его в теле вместо String. Убедитесь, что тип содержимого ответа - application / json

Вы также можете вручную создать строку, которая выглядит как Json, но содержимое должно быть таким, как указано выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...