Tôi có json như thế này:Jackson JSON phân tích có chứa một mảng các đối tượng và mảng bản đồ w/phím năng động
{
"users":{
"1234":{
"firstname":"Joe",
"lastname":"Smith"
},
"9876":{
"firstname":"Bob",
"lastname":"Anderson"
}
},
"jobs":[
{
"id":"abc",
"location":"store"
},
{
"id":"def",
"location":"factory"
}
]
}
Tôi đang phân tích cú pháp này sử dụng Jackson và vì vậy tôi đã được phân tích cú pháp phản ứng sử dụng: readvalue (json, MyCustomClass.class)
đâu MyCustomClass trông giống như
public class MyCustomClass{
@JsonProperty("jobs")
ArrayList<Job> jobs;
@JsonProperty("users")
ArrayList<UserMap> usersMap;
}
Bây giờ các công việc phân tích một cách hoàn hảo vào Jobs đối tượng nhưng tôi không thể có được những người sử dụng để phân tích kể từ khi họ có phím năng động. Tôi đã đọc về JsonAnyGetter/Setter và cố gắng tạo bản đồ đối tượng UserMap ánh xạ một chuỗi -> Người dùng như:
public class UserMap {
private HashMap<String,User> usersMap;
@JsonAnySetter
public void add(String key, User user){
usersMap.put(key, user);
}
@JsonAnyGetter
public Map<String, User> getUsersMap(){
return usersMap;
}
}
nhưng không hiệu quả. Tôi nghĩ rằng tôi có thể làm điều đó với một wrapper TypeReference nhưng tôi chỉ có thể nghĩ ra một cách để làm điều đó nếu những bản đồ là loại duy nhất tôi đã nhận được trở lại. Vì tôi nhận được các loại khác nhau trở lại (người dùng và công việc) là nó có thể làm điều này?
json bạn không hợp lệ. Bạn có, sau khi "Anderson" ví dụ –
Xin lỗi đó là một lỗi đánh máy của tôi, sửa nó. Nên là json hợp lệ bây giờ. – pat