Heim  >  Artikel  >  Backend-Entwicklung  >  Wie gehe ich mit beliebigen JSON-Schlüsseln in Go-Strukturen um?

Wie gehe ich mit beliebigen JSON-Schlüsseln in Go-Strukturen um?

DDD
DDDOriginal
2024-11-26 16:04:10941Durchsuche

How to Handle Arbitrary JSON Keys in Go Structs?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn