Tôi có một câu hỏi tương tự như một số câu hỏi tại stackoverflow nhưng không ai thực sự trả lời được vấn đề của tôi. Tôi sử dụng ObjectMapper
của Jackson và muốn phân tích chuỗi JSON này vào một danh sách các đối tượng sử dụng:Jackson JSON + Java Generics được LinkedHashMap
[{ "user" : "Tom", "role" : "READER" },
{ "user" : "Agnes", "role" : "MEMBER" }]
tôi xác định một lớp bên trong như thế này:
public class UserRole {
private String user
private String role;
public void setUser(String user) {
this.user = user;
}
public void setRole(String role) {
this.role = role;
}
public String getUser() {
return user;
}
public String getRole() {
return role;
}
}
Để phân tích cú pháp JSON String để một Danh sách của UserRoles
tôi sử dụng Generics:
protected <T> List<T> mapJsonToObjectList(String json) throws Exception {
List<T> list;
try {
list = mapper.readValue(json, new TypeReference<List<T>>() {});
} catch (Exception e) {
throw new Exception("was not able to parse json");
}
return list;
}
Nhưng những gì tôi nhận được lại là một List
của LinkedHashMaps
.
Có gì sai với mã của tôi?
Đó là ngôn ngữ Java, và loại tẩy xoá khét tiếng: T trong đó là một biến kiểu chứ không phải gõ nét; và về cơ bản có nghĩa là bạn đang yêu cầu Danh sách