2016-05-19 13 views
1

Ich weiß nicht, ob es möglich ist, Arrays in HashMap deserialise i json haben:Moshi HashMap Deserializer

"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" 
} 
........ 
] 

und für die json Ich habe Liste bekam:

private List<AdditionalProperties> additionalProperties; 

alles funktioniert perfekt, aber wie man das json in HashMap speichern, wo Key "Schlüssel" (TerminalName)“

private HashMap<String,AdditionalProperties> additionalProperties; 
+0

Das erste Objekt im JSON-Array für 'additionalProperties' ist also ein 'AdditionalProperties'-Objekt? Und Sie möchten den String für 'key' herausziehen und den Schlüssel für das gesamte Objekt in Ihrer' Map' machen? Wenn dies der Fall ist, wäre es wahrscheinlich am einfachsten, ein intermediäres Objekt zu erstellen und das mit den mit "@ ToJson" und "@ FromJson" annotierten Methoden zu transformieren. Sehen Sie sich https://github.com/square/moshi/blob/master/README.md#another-example an –

Antwort

2

Moshi unterstützt Felder deklariert als 012 istaber nicht als HashMap. Auf diese Weise kann Moshi eine andere Implementierung von Map verwenden, die geeigneter ist als HashMap für decodiertes JSON. Wenn Sie den Typ Ihres Feldes zu Map<String,AdditionalProperties> ändern, sollte es funktionieren.

Verwandte Themen