Umgang mit beliebigen JSON-Schlüsseln in Go-Strukturen
Ihre JSON-Antwort enthält unterschiedliche Schlüssel, die nicht statisch in einer Go-Struktur definiert werden können. Um dieses Problem zu lösen, sollten Sie die Verwendung einer Kartendatenstruktur in Betracht ziehen, die dynamische Schlüssel-Wert-Paare ermöglicht.
Verwenden einer Karte für dynamische Schlüssel
Der folgende Code definiert eine Struktur, die verwendet eine Karte, um die beliebigen Schlüssel-Wert-Paare darzustellen:
type Items map[string][]ImageUrl
Hier ist Items eine Karte, die Zeichenfolgen (die Schlüssel) zuordnet im JSON) in Slices von ImageUrl-Strukturen. Jede ImageUrl-Struktur stellt eine einzelne Bild-URL mit ihren Abmessungen dar.
Beispielverwendung
Diese modifizierte Version Ihres Codes veranschaulicht, wie Sie die Items-Struktur verwenden:
type ImageUrl struct { Url string Width, Height int } type Items map[string][]ImageUrl func main() { json := `{"items": [{"name": "thing", "image_urls": { "50x100": [{ "url": "http://site.com/images/1/50x100.jpg", "width": 50, "height": 100 }, { "url": "http://site.com/images/2/50x100.jpg", "width": 50, "height": 100 }], "200x300": [{ "url": "http://site.com/images/1/200x300.jpg", "width": 200, "height": 300 }], "400x520": [{ "url": "http://site.com/images/1/400x520.jpg", "width": 400, "height": 520 }] } } }` var items Items if err := json.Unmarshal([]byte(json), &items); err != nil { // Handle error } fmt.Println(items) // Prints the map containing the keys and values }
In diesem Beispiel füllt die json.Unmarshal-Funktion die Items-Map automatisch mit den entsprechenden Schlüssel-Wert-Paaren. Sie können dann nach Bedarf auf die Daten zugreifen und diese bearbeiten.
Hinweis: Bei diesem Ansatz wird davon ausgegangen, dass die verschachtelten Schlüssel in Ihrem JSON konsistent sind. Ist dies nicht der Fall, müssen Sie möglicherweise komplexere Datenstrukturen verwenden, z. B. verschachtelte Karten oder Kartenausschnitte.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit beliebigen JSON-Schlüsseln in Go-Strukturen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!