Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Unmarshal Nested JSON dalam Medan String dalam Go?

Bagaimana untuk Unmarshal Nested JSON dalam Medan String dalam Go?

Patricia Arquette
Lepaskan: 2024-11-26 13:43:17
asal
187 orang telah melayarinya

How to Unmarshal Nested JSON within a String Field in Go?

Tidak Boleh Unmarshal String ke Go Struct Field

Dalam percubaan untuk menyahsiri respons Docker API, ralat "json: cannot unmarshal string into Go medan struct .v1Keserasian" berlaku. Struktur JSON mentakrifkan medan Keserasian v1 sebagai rentetan, tetapi respons sebenar mengandungi rentetan JSON dalam medan tersebut.

Untuk menyelesaikan isu ini, pendekatan unmarshaling dua hala diperlukan:

  1. Tentukan medan baharu, V1CompatibilityRaw, dalam struct Go untuk menangkap nilai rentetan mentah.
  2. Unmarshal rentetan JSON mentah menjadi struct V1Compatibility yang berasingan.

Berikut ialah struct Go yang diubah suai:

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"`
}
Salin selepas log masuk

Selepas menyahmarshall rentetan JSON mentah, medan V1Compatibility boleh dikemas kini dengan yang dihuraikan data:

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
}
Salin selepas log masuk

Pendekatan dua hala ini berkesan mengendalikan situasi di mana rentetan medan dalam respons JSON mengandungi kandungan JSON bersarang.

Atas ialah kandungan terperinci Bagaimana untuk Unmarshal Nested JSON dalam Medan String dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan