Em đang dùng Rest Template để call 1 api nó trả data JSON dạng:
{ "Data": [{"ID":"vt", "Name":"vuong"}, {"ID":"ha", "Name":"hoang"}], "ErrorCode": null, "ErrorMsg": null }
E có tạo 1 class tên ApiResponse
@JsonProperty("Data") private List<User> data; @JsonProperty("ErrorCode") private String errorCode; @JsonProperty("ErrorMsg") private String errorMess;
Cái list data json thì em tạo 1 class User
@JsonProperty("ID") private String id; @JsonProperty("Name") private String name;
Khi em goi
ResponseEntity<ApiResult> responseEntity = restTemplate.exchange( api, HttpMethod.POST, httpEntity, ApiResult.class );
và lấy list data
List<User> users = responseEntity.getBody().getData();
thì cái users này nó không map vào với mấy cái field trong class của em.
Em đã dùng sai @JsonProperty ở đây ạ?
Bản chất bên trong spring dùng ObjectMapper, nên anh đã thử tạo 1 chương trình thế này và anh thấy bình thường:
Liệu có sự nhầm lẫn nào giữa ApiResponse và ApiResult không em?
Liệu có sự nhầm lẫn nào giữa ApiResponse và ApiResult không em?=> chắc là do em đặt tên em sai ý nghĩa.
khi em gọi cái này nè a. em cũng chưa dùng objectMapper.readValue(…)
thì cái responseEntity em nhận được đó nó có map vào được từng field trong List data không ạ?
Được em ạ, nếu không đc nó sẽ ném ra exception
à em nhầm ạ. class ApiResult em đang làm theo kiểu generic
thì khi :
nó sẽ ko map được ạ.