Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menggunakan Berbilang Tag JSON untuk Medan Struktur Tunggal dalam Go?

Bagaimana untuk Menggunakan Berbilang Tag JSON untuk Medan Struktur Tunggal dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-12-17 03:25:25
asal
413 orang telah melayarinya

How to Use Multiple JSON Tags for a Single Struct Field in Go?

Teg JSON Berbilang untuk Medan Struktur

Dalam senario di mana anda menerima data JSON daripada pelayan dan perlu menyahmarshalnya menjadi struct, anda mungkin menghadapi situasi di mana anda ingin mewakili data yang sama dengan tag JSON yang berbeza untuk yang berbeza tujuan.

Memperibadikan Teg JSON

Teg JSON menentukan nama medan yang digunakan dalam perwakilan JSON. Secara lalai, teg medan adalah sama dengan nama medan. Walau bagaimanapun, anda boleh menyesuaikan teg untuk menukar nama yang digunakan semasa mensiri atau menyahsiri struct.

Teg JSON Tunggal

Menggunakan teg JSON tunggal adalah mudah. Hanya tentukan teg yang diingini sebagai rentetan literal:

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

Berbilang Teg JSON

Seperti yang dinyatakan dalam soalan, tidak mungkin untuk melampirkan berbilang teg JSON terus ke satu bidang. Walau bagaimanapun, terdapat teknik yang membolehkan anda mengatasi had ini.

Pemutus Struktur

Penyelesaian yang diberikan mencadangkan penggunaan dua struct yang mempunyai reka letak medan yang sama. Contohnya:

type Foo struct {
    Name string
    Age  int
}

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

Kemudian, anda boleh menghantar struct Foo ke struct Bar untuk menukar tag JSON. Teknik ini amat berguna apabila anda mempunyai sejumlah besar medan:

foo := Foo{Name: "Sam", Age: 20}
bar := (*Bar)(unsafe.Pointer(&foo))
Salin selepas log masuk

Awas

Adalah penting untuk ambil perhatian bahawa struct kedua harus tidak dieksport untuk mengelakkannya daripada diakses di luar pakej semasa anda. Ini memastikan bahawa tuangan hanya dilakukan seperti yang dimaksudkan dan tidak disalahgunakan secara tidak sengaja.

Contoh

Kod berikut menunjukkan teknik tuangan yang dinyatakan di atas:

package main

import (
    "encoding/json"
    "fmt"
)

type Foo struct {
    Name string
    Age  int
}

type Bar struct {
    Name string `json:"employee_name"`
    Age  int    `json:"-"`
}

func main() {
    foo := Foo{Name: "Sam", Age: 20}
    bar := (*Bar)(unsafe.Pointer(&foo))

    jsonBytes, err := json.Marshal(bar)
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Println(string(jsonBytes))
}
Salin selepas log masuk

Kod ini berjaya menyerikan data struktur Foo menggunakan tag JSON yang ditakrifkan dalam struktur Bar. Ia menghasilkan output JSON berikut:

{"employee_name":"Sam"}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Berbilang Tag JSON untuk Medan Struktur Tunggal 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