Unmarshalling von JSON mit Arrays unbekannter Größe
Beim Abrufen von Daten über JSON kommt es häufig vor, dass der zurückgegebene JSON möglicherweise einen hat oder nicht Array. Wenn Sie beispielsweise eine Liste intelligenter Zähler anfordern, wird diese möglicherweise als einzelnes Element unter „gwrcmd“ empfangen. Wenn jedoch der Stromverbrauch angefordert wird, wird er möglicherweise als Array von „gwrcmds“ zurückgegeben.
Diese Mehrdeutigkeit stellt eine Herausforderung beim Marshalling dar, da Go-Strukturen explizite Definitionen für Arrays und einzelne Elemente erfordern. Um dieses Problem zu beheben, kann json.Unmarshal verwendet werden, um entweder eine einzelne Struktur { } oder ein Array []struct { } basierend auf der JSON-Struktur zurückzugeben.
Bei json.Unmarshal kann jedoch ein Fehler auftreten, wenn das erwartet wird Typkonflikte mit der JSON-Struktur. Um dieses Problem zu beheben, kann eine zweite Struktur erstellt werden, die die erste dupliziert, mit der Ausnahme, dass ein Slice für „Gwrcmd“ verwendet wird. Alternativ besteht ein robusterer Ansatz darin, json.RawMessage zu verwenden, um den JSON-Wert unbekannten Typs zu erfassen und basierend auf seinem Inhalt ein weiteres Unmarshalling durchzuführen. Dies vermeidet das Rätselraten, den Array-Typ ausschließlich anhand des ersten Bytes zu bestimmen.
Beispiele für beide Ansätze werden in den bereitgestellten Go-Codeausschnitten demonstriert. Darüber hinaus werden relevante Ressourcen zur weiteren Erkundung aufgeführt.
Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich JSON-Arrays unbekannter Größe in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!