【问题标题】:How to get pretty formatted ResponseEntity for Custom Response Model?如何为自定义响应模型获得格式良好的 ResponseEntity?
【发布时间】:2020-07-01 13:27:54
【问题描述】:

当我为 ResponseEntity 返回String 时,它会在 Postman 中显示格式化的 json,但是当我为 ResponseEntity 返回CustomModel 时,它会显示非格式化的 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\"}" 未格式化?如何在 Postman 中获取格式正确的 json?

【问题讨论】:

  • 在第二个示例中,您的正文字段是字符串,而不是对象。
  • 我怎样才能使它成为对象?

标签: json spring spring-boot http resttemplate


【解决方案1】:

您可以通过多种方式做到这一点。

使用专用对象:

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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多