Rumah > pembangunan bahagian belakang > Golang > Bolehkah Berbilang Tag JSON Ditakrifkan untuk Medan Struktur Go Tunggal?

Bolehkah Berbilang Tag JSON Ditakrifkan untuk Medan Struktur Go Tunggal?

Susan Sarandon
Lepaskan: 2024-12-24 14:27:18
asal
726 orang telah melayarinya

Can Multiple JSON Tags Be Defined for a Single Go Struct Field?

Struktur dengan Berbilang Teg JSON

Dalam senario di mana respons JSON diterima daripada pelayan dan perlu dibongkar ke dalam struct, mungkin terdapat keperluan untuk mengubah suai teg JSON sebelum menghantarnya ke pelayan lain. Lazimnya, ini melibatkan penciptaan struct baharu dan menyalin data secara manual.

Walau bagaimanapun, perlu dipertimbangkan sama ada boleh mentakrifkan berbilang teg JSON untuk satu struct. Percubaan untuk melampirkan berbilang tag pada medan yang sama secara langsung dalam definisi struct, seperti dalam contoh di bawah, tidak disokong:

type Foo struct {
    Name string `json:"name" json:"employee_name"`
    Age  int    `json:"age" json:"-"`
}
Salin selepas log masuk

Sebaliknya, penyelesaian yang mungkin terletak pada pemutus antara dua struct yang dibentangkan secara serupa (padanan nama, jenis, dan susunan medan). Walaupun pendekatan ini secara amnya tidak digalakkan, ia boleh digunakan dengan berhati-hati untuk mencapai hasil yang diingini.

type Foo struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

type Bar struct {
    Name string `json:"employee_name"`
    // Age is not exported
    age int `json:"-"`
}

func main() {
    foo := Foo{}
    // Unmarshal JSON
    err := json.Unmarshal([]byte("{\"name\":\"Sam\",\"age\":20}"), &foo)
    if err != nil {
        log.Fatal(err)
    }

    // Cast between types, overwriting internal representation
    bar := (*Bar)(unsafe.Pointer(&foo))

    // Marshal modified JSON
    data, err := json.Marshal(bar)
    if err != nil {
        log.Fatal(err)
    }

    // Example JSON: {"employee_name":"Sam"}
    fmt.Println(string(data))
}
Salin selepas log masuk

Adalah penting untuk ambil perhatian bahawa pendekatan pemutus ini harus digunakan dengan bijak. Struktur kedua hendaklah tidak dieksport untuk mengelakkan penggunaan yang tidak diingini di luar konteks tertentu.

Atas ialah kandungan terperinci Bolehkah Berbilang Tag JSON Ditakrifkan untuk Medan Struktur Go Tunggal?. 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