RestTemplate 将 JSON 数组映射到对象列表

时间:2021-02-16 04:44:05

标签: java json spring-boot jackson resttemplate

我在使用 RestTemplate 将以下 JSON 响应输出中的环境 LetakTandaTanganResponseDto 映射到 LetakTandaTanganResponseDto 对象列表时遇到问题。 我收到来自 URL 的响应,如下所示:

{
  "code": "00",
  "desc": "SUCCESS",
  "body": [
    {
      "id": 71,
      "createdate": null,
      "lx": "104",
      "ly": "632",
      "page": 1,
      "prfKe": 0,
      "rx": "260",
      "ry": "632",
      "ttdKe": 1,
      "formatItemId": null,
      "formatPdfId": 10
    },
    {
      "id": 72,
      "createdate": null,
      "lx": "485",
      "ly": "629",
      "page": 1,
      "prfKe": 0,
      "rx": "692",
      "ry": "629",
      "ttdKe": 2,
      "formatItemId": null,
      "formatPdfId": 10
    },
    {
      "id": 73,
      "createdate": null,
      "lx": "585",
      "ly": "729",
      "page": 1,
      "prfKe": 0,
      "rx": "792",
      "ry": "729",
      "ttdKe": 3,
      "formatItemId": null,
      "formatPdfId": 10
    }
  ]
}

RestTemplate 代码。

ResponseEntity<List<LetakTandaTanganResponseDto>> letakTTDResponse = restTemplate.exchange(uri, HttpMethod.GET, entity, new ParameterizedTypeReference<List<LetakTandaTanganResponseDto>>() {
                });
                if (letakTTDResponse != null && letakTTDResponse.hasBody()) {
                    listletakTTD = letakTTDResponse.getBody();
                }
  return listletakTTD;

如果我碰巧使用自定义 Value 对象,例如:

@Data
@ToString
public class LetakTandaTanganResponseDto {

    public String code;
    public String desc;
    public Body body;

    @Data
    @ToString
    public class Body {

        public Long id;
        public Integer ttd_ke;
        public Integer page;
        public String lx;
        public String ly;
        public String rx;
        public String ry;
        public String createdate;
        public Integer prfKe;
        public Long formatItemId;
        public Long formatPdfId ;
    }
}

你能帮忙如何将上面提到的 JSON 列表结构映射到一个对象吗?

1 个答案:

答案 0 :(得分:0)

尝试根据 json 响应更改响应类

public class LetakTandaTanganResponseDto {
    public String code;
    public String desc;
    public List<Body> body;
    // ...
}

你的回答是

ResponseEntity<LetakTandaTanganResponseDto> letakTTDResponse = restTemplate.exchange(uri, HttpMethod.GET, entity, new ParameterizedTypeReference<LetakTandaTanganResponseDto>() {
           });
            if (letakTTDResponse != null && letakTTDResponse.hasBody()) {
                listletakTTD.setBody( letakTTDResponse.getBody());
            }
  return listletakTTD;
相关问题