2016-05-19 1 views
1

Je ne sais pas s'il est possible de deserialise tableaux en hashmap j'ai JSON:Moshi HashMap désérialiseur

"additionalProperties": [ 
{ 
    "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", 
    "category": "Description", 
    "key": "TerminalName", 
    "sourceSystemKey": "BikePoints", 
    "value": "200017", 
    "modified": "2016-05-19T12:02:39.82" 
} 
........ 
] 

et que je JSON ai liste:

private List<AdditionalProperties> additionalProperties; 

tout fonctionne parfait, mais comment stocker cette JSON dans HashMap où la clé est « clé » (TerminalName) »

private HashMap<String,AdditionalProperties> additionalProperties; 
+0

Alors que le premier objet dans le tableau JSON pour 'additionalProperties' est un objet' AdditionalProperties'? Et vous voulez retirer la chaîne pour 'key' et en faire la clé pour l'ensemble de l'objet dans votre' Map'? Si c'est le cas, le plus simple serait probablement de créer un objet intermédiaire et de le transformer avec les méthodes annotées '@ ToJson' et' @ FromJson'. Jetez un oeil à https://github.com/square/moshi/blob/master/README.md#another-example –

Répondre

2

Moshi soutient les champs déclarés Map mais pas aussi HashMap. De cette façon, Moshi peut utiliser une implémentation différente de Map qui est plus appropriée que HashMap pour JSON décodé. Si vous changez le type de votre champ en Map<String,AdditionalProperties> cela devrait fonctionner.