Heim > Artikel > Backend-Entwicklung > Ordnen Sie JSON einer Struktur mit verschachtelten Wörterbüchern zu
php Editor Strawberry Mapping von JSON in eine Struktur mit verschachtelten Wörterbüchern ist eine gängige Datenverarbeitungsmethode. Durch die Konvertierung von JSON-Daten in ein verschachteltes Wörterbuch können wir die Daten bequemer bedienen und darauf zugreifen. Die Struktur verschachtelter Wörterbücher kann eine flexiblere Möglichkeit zur Datenorganisation bieten und es uns ermöglichen, komplexe Datenstrukturen effizienter zu verarbeiten. In praktischen Anwendungen kann uns die Zuordnung von JSON zu verschachtelten Wörterbüchern dabei helfen, Daten besser zu verstehen und zu verarbeiten sowie die Lesbarkeit und Wartbarkeit des Codes zu verbessern. Unabhängig davon, ob von APIs zurückgegebene JSON-Daten verarbeitet oder Konfigurationsdateien analysiert werden, ist die Zuordnung von JSON zu verschachtelten Wörterbüchern eine gängige Datenverarbeitungstechnik.
Ich bin neu bei Golang. Ich habe eine JSON-Datei mit einer verschachtelten Struktur, die ich analysieren und füllen möchte.
Ich versuche, eine Kartenstruktur zum Ausfüllen zu verwenden. Dies gelang mir mit einfachen Strukturen. Aber wenn es um das Wörterbucharray (Schlüssel: Struktur) geht. map[string]接口{}
似乎因 runtime 错误而失败:索引超出范围
.
Ich habe versucht, Folgendes mit dem JSON-Beispiel unten zu tun.
type window struct { loc []int wrtc string label string } type view struct { windows []window } type views struct { views []view } type desktop struct { views []views `mapstructure:views` rotation_speed string `mapstructure:"rotationspeed" json:rotationspeed"` } func main() { file, _ := ioutil.readfile("test.json") data := desktop{} _ = json.unmarshal([]byte(file), &data) fmt.println("data: ", data.views[0]) }
{ "desktop": { "view": [{// configs for view1 "random_id1": { "loc": [0,0,640,360], "wrtc": "some string", "label": "window 1" }, "random_id213443": { "loc": [640,360,1280,720], "wrtc": "some string blah", "label": "window 2" }, // more windows with random ids.... }, { // configs for view2... } ], "rotationSpeed": 30 }
Da die Fenster-ID zufällig ist, kann ich sie nicht in der Struktur definieren.
Ich habe es mit mapstruct:",squash"
versucht, aber auch das schien fehlgeschlagen zu sein.
Vielen Dank für jede Hilfe, die Sie leisten können.
@burak serdar hat recht
Sie benötigen keine Kartenstruktur. JSON-Unmarshalling kann dieses Problem lösen.
Ihr Code enthält viele Fehler, z. B. Struktur, Groß- und Kleinschreibung, „Ansichten“ usw.
Hier ist die Demo:
package main import ( "encoding/json" "fmt" ) var data = ` { "desktop":{ "view":[ { "random_id1_1":{ "loc":[ 0, 0, 640, 360 ], "wrtc":"some string", "label":"window 1" }, "random_id1_2":{ "loc":[ 640, 360, 1280, 720 ], "wrtc":"some string blah", "label":"window 2" } }, { "random_id2_1":{ "loc":[ 0, 0, 640, 360 ], "wrtc":"some string", "label":"window 1" }, "random_id2_2":{ "loc":[ 640, 360, 1280, 720 ], "wrtc":"some string blah", "label":"window 2" } } ], "rotationspeed":30 } } ` type window struct { loc []int wrtc string label string } type desktop struct { view []map[string]window rotation_speed int `json:"rotationspeed" mapstructure:"rotationspeed"` } type config struct { desktop desktop } func main() { c := config{} json.unmarshal([]byte(data), &c) fmt.println("json.unmarshal: ", c) }
json.unmarshal: {{[map[random_id1_1:{[0 0 640 360] some string window 1} random_id1_2:{[640 360 1280 720] some s tring blah window 2}] map[random_id2_1:{[0 0 640 360] some string window 1} random_id2_2:{[640 360 1280 720] some string blah window 2}]] 30}}
Wenn Sie eine view
Struktur wünschen, können Sie Mapstruct auch über „remain“ verwenden
type Window struct { Loc []int Wrtc string Label string } type View struct { Windows map[string]Window `mapstructure:",remain"` } type Desktop struct { View []View Rotation_speed int `json:"rotationSpeed" mapstructure:"rotationSpeed"` } type Config struct { Desktop Desktop } func main() { c2 := Config{} m := map[string]interface{}{} _ = json.Unmarshal([]byte(data), &m) mapstructure.Decode(m, &c2) fmt.Println("mapstructure: ", c2) }
Das obige ist der detaillierte Inhalt vonOrdnen Sie JSON einer Struktur mit verschachtelten Wörterbüchern zu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!