Ho JSON come questo:Jackson JSON parsing contenente un array di oggetti e la matrice di mappe w chiavi/dinamici
{
"users":{
"1234":{
"firstname":"Joe",
"lastname":"Smith"
},
"9876":{
"firstname":"Bob",
"lastname":"Anderson"
}
},
"jobs":[
{
"id":"abc",
"location":"store"
},
{
"id":"def",
"location":"factory"
}
]
}
sto analizzando questa utilizzando Jackson e così mi è stato l'analisi delle risposte utilizzando: readvalue (jSON, MyCustomClass.class)
Dove myCustomClass sembra
public class MyCustomClass{
@JsonProperty("jobs")
ArrayList<Job> jobs;
@JsonProperty("users")
ArrayList<UserMap> usersMap;
}
Ora i lavori parsing perfettamente in oggetti lavoro, ma non riesco a ottenere agli utenti di analizzare in quanto hanno le chiavi dinamiche. Ho letto di JsonAnyGetter/Setter e provato a fare la mappa oggetto usermap che associa una stringa -> User come:
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;
}
}
ma che non funziona. Penso di poterlo fare con un wrapper TypeReference, ma posso solo pensare a un modo per farlo se quelle mappe fossero l'unico tipo che stavo tornando indietro. Dal momento che sto recuperando diversi tipi (utenti e lavori) è possibile farlo?
tuo JSON non è valido. Hai, dopo "Anderson" per esempio –
Scusa che è stato un refuso da parte mia, risolto. Dovrebbe essere valido JSON ora. – pat