Unmarshalling von verschachteltem JSON mit unbekannten Schlüsseln
Die Herausforderung besteht darin, eine JSON-Struktur mit einer unbekannten Anzahl äußerer Schlüssel und einer verwirrend strukturierten Verschachtelung zu analysieren Schlüssel. Betrachten Sie das folgende JSON-Format:
{ "message": { "Server1.example.com": [], "Server2.example.com": [] }, "response_ms": 659, "success": true }
Komplikationen bei der Strukturdefinition
Die Komplexität ergibt sich aus dem Fehlen eines eindeutigen Schlüssels außerhalb des Servernamens und der dynamischen Natur des äußere Schlüssel. Der erste Versuch mit einer tief verschachtelten Struktur:
type ServerDetails struct { Message struct { Hostname struct { Details struct { Application string `json:"application"` } `json:"-"` } `json:"-"` } `json:"message"` }
schlägt aufgrund der unbekannten Servernamen und des einzelnen verschachtelten Schlüssels ohne Außenschlüssel fehl.
Dynamische Schlüssellösung
Um diese Herausforderungen zu meistern, kann man eine Map[string]ServerStruct innerhalb der Struktur der obersten Ebene verwenden. ServerStruct enthält Anwendungs-, Besitzer- und andere relevante Informationen, die für jeden Server spezifisch sind. JSON-Tags können strategisch hinzugefügt werden, um eine ordnungsgemäße Analyse sicherzustellen.
Überarbeitete Strukturdefinition
type YourStruct struct { Success bool ResponseMS int Servers map[string]*ServerStruct } type ServerStruct struct { Application string Owner string [...] }
JSON-Tags und Unmarshalling
Zusätzliche JSON-Tags sind erforderlich:
{ "message": { "Server1.example.com": [ { "application": "Apache", "host": { "name": "/^Server-[13456]/" }, "owner": "User1", "project": "Web", "subowner": "User2" } ],
Die Das Feld „Nachricht“ wird jetzt in eine Map[string][]ServerStruct entmarshallt. Jeder Schlüssel in der Zuordnung stellt einen Servernamen dar und der entsprechende Wert ist ein Array von ServerStruct. Das „Host“-Feld wird beim Unmarshalling mit dem „-“-Tag ignoriert.
Mit diesen Änderungen können die JSON-Daten erfolgreich in die überarbeitete Struktur geparst werden.
Das obige ist der detaillierte Inhalt vonWie entmarshallt man verschachteltes JSON mit unbekannten Schlüsseln und dynamischen Servernamen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!