Как получить довольно отформатированный ResponseEntity для пользовательской модели ответа? - PullRequest
0 голосов
/ 20 марта 2020

Когда я возвращаю String для ResponseEntity, он показывает довольно отформатированный json в Почтальоне, но когда я возвращаю CustomModel для ResponseEntity, он показывает неформатированный json.

Код 1:

@PostMapping("/json1")
ResponseEntity<String> getData1() {

    String result = "{\"name\":\"Alex\"}";
    return ResponseEntity.ok().body(result);
}

Выход почтальона 1:

{
  "name": "Alex"
}

Код 2:

class RestResp {

    public ResponseEntity<?> data = null;
}

@PostMapping("/json2")
ResponseEntity<RestResp> getData2() {

    String result = "{\"name\":\"Alex\"}";
    RestResp response = new RestResp();
    response.data = ResponseEntity.ok().body(result);
    return ResponseEntity.ok().body(response);
}

Выход почтальона 2:

{
    "data": {
        "headers": {},
        "body": "{\"name\":\"Alex\"}",
        "statusCode": "OK",
        "statusCodeValue": 200
    }
}

Почему я получаю "{\"name\":\"Alex\"}" не отформатирован? Как я могу получить правильно отформатированный json в Почтальоне?

1 Ответ

1 голос
/ 20 марта 2020

Вы можете сделать это разными способами.

С выделенным объектом:

class Person {

    private String name;

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

и

    RestResp response = new RestResp();
    response.data = ResponseEntity.ok().body(new Person("Alex"));
    return ResponseEntity.ok().body(response);

Сопоставьте его с json:

    String result = "{\"name\":\"Alex\"}";
    ObjectMapper mapper = new ObjectMapper();
    JsonNode node = mapper.readTree(result);

    RestResp response = new RestResp();
    response.data = ResponseEntity.ok().body(node);
    return ResponseEntity.ok().body(response);

Или просто используйте карту:

    Map<String,Object> map = new HashMap<>();
    map.put("name", "Alex");

    RestResp response = new RestResp();
    response.data = ResponseEntity.ok().body(map);
    return ResponseEntity.ok().body(response);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...