Heim >Backend-Entwicklung >Golang >Wie gehe ich mit verschachtelten JSON-Strings beim Unmarshaling in Go um?
Unmarshaling von JSON mit verschachtelten Strings
Wenn ein Fehler auftritt, der besagt: „String kann nicht in das Go-Strukturfeld entmarshaliert werden“, bedeutet dies, dass der JSON vorhanden ist analysiert enthält einen Zeichenfolgenwert in einem Feld, von dem erwartet wird, dass es sich um eine Struktur handelt. Um dieses Problem zu beheben, ziehen Sie den folgenden Ansatz in Betracht:
import ( "encoding/json" "fmt" "log" ) type ManifestResponse struct { Name string `json:"name"` Tag string `json:"tag"` Architecture string `json:"architecture"` FsLayers []struct { BlobSum string `json:"blobSum"` } `json:"fsLayers"` History []struct { V1CompatibilityRaw string `json:"v1Compatibility"` V1Compatibility V1Compatibility } `json:"history"` } type V1Compatibility struct { ID string `json:"id"` Parent string `json:"parent"` Created string `json:"created"` } func main() { exemplar := `{ "schemaVersion": 1, "name": "library/redis", "tag": "latest", "architecture": "amd64", "history": [ { "v1Compatibility": "{\"id\":\"ef8a93741134ad37c834c32836aefbd455ad4aa4d1b6a6402e4186dfc1feeb88\",\"parent\":\"9c8b347e3807201285053a5413109b4235cca7d0b35e7e6b36554995cfd59820\",\"created\":\"2017-10-10T02:53:19.011435683Z\"}" } ] } ` var jsonManResp ManifestResponse if err := json.Unmarshal([]byte(exemplar), &jsonManResp); err != nil { log.Fatal(err) } for i := range jsonManResp.History { var comp V1Compatibility if err := json.Unmarshal([]byte(jsonManResp.History[i].V1CompatibilityRaw), &comp); err != nil { log.Fatal(err) } jsonManResp.History[i].V1Compatibility = comp } fmt.Println(jsonManResp) }
In diesem aktualisierten Code deklarieren wir V1CompatibilityRaw als Zeichenfolgenfeld in ManifestResponse.History und entmarshen es dann manuell in eine V1Compatibility-Struktur.
Dieser Ansatz ermöglicht die ordnungsgemäße Deserialisierung der JSON-Antwort in die gewünschte Go-Struktur und stellt sicher, dass die verschachtelte Zeichenfolge analysiert wird richtig.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit verschachtelten JSON-Strings beim Unmarshaling in Go um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!