Rumah  >  Artikel  >  pembangunan bahagian belakang  >  golang json masukkan komen

golang json masukkan komen

WBOY
WBOYasal
2023-05-15 10:27:37645semak imbas

Apabila membangun dengan Golang, keperluan yang sangat biasa adalah untuk menukar data ke dalam format JSON untuk penyimpanan atau penghantaran. JSON ialah format data yang ringan, mudah dibaca dan ditulis, dan digunakan secara meluas dalam aplikasi web dan aplikasi mudah alih. Walau bagaimanapun, dalam beberapa kes, kami mungkin perlu menambah anotasi pada data JSON untuk meningkatkan kebolehbacaannya atau menerangkan maksud medan tertentu dan standard JSON itu sendiri tidak menyokong anotasi. Artikel ini akan memperkenalkan beberapa cara untuk memasukkan ulasan JSON dengan Golang.

Kaedah 1: Gunakan teg struktur

Di Golang, kami biasanya menggunakan teg struktur (teg) untuk mentakrifkan hubungan pemetaan medan dalam JSON. Sebagai contoh, kita boleh menggunakan json:"username" untuk memetakan medan struct Name ke medan username dalam JSON. Malah, ia dibenarkan untuk menggunakan ulasan dalam tag struktur, kita hanya perlu menambah json:"-" sebelum komen.

type User struct {
    Name     string `json:"username"`  // 用户名
    Password string `json:"password"`  // 密码
}

Dalam contoh di atas, kami menggunakan // untuk menambah ulasan bagi menerangkan maksud setiap medan. Apabila kita menukar struktur User kepada JSON, ulasan tidak akan menjejaskan output. Walau bagaimanapun, apabila menyahkod JSON ke dalam struktur, komen diabaikan, yang tidak mesra kepada ketegasan kod.

Kaedah 2: Gunakan rentetan ulasan

Kaedah lain ialah menambah rentetan ulasan dalam JSON rentetan ulasan ini biasanya diletakkan sebelum nilai medan JSON. Sebagai contoh, kita boleh menambah ulasan pada data JSON berikut:

{
    "user": {
        "name": "alice", // 用户名
        "password": "123456" // 密码
    }
}

Di Golang, kita boleh menggunakan jenis json.RawMessage untuk mewakili nilai rentetan JSON. Jenis ini boleh menyimpan rentetan JSON yang tidak terlepas dan tidak melakukan apa-apa dengannya semasa menyahkod. Kita boleh menyimpan rentetan ulasan dalam json.RawMessage dan kemudian menambahkannya pada JSON.

Berikut ialah contoh:

type User struct {
    Name     string `json:"-"`        // 不输出
    Password string `json:"-"`        // 不输出
    Comment  string `json:"comment"` // 注释
}

u := User{
    Name:     "alice",
    Password: "123456",
    Comment:  `{ "//username": "用户名", "//password": "密码" }`,
}

data, err := json.Marshal(u)
if err != nil {
    log.Fatal(err)
}

fmt.Println(string(data))

Dalam contoh di atas, kami menandakan medan nama pengguna dan kata laluan pengguna sebagai - untuk tidak mengeluarkan ke JSON. Rentetan ulasan kemudiannya disimpan dalam medan Comment. Apabila menukar struktur u kepada format JSON, kami menggunakan fungsi json.Marshal untuk menukarnya kepada rentetan JSON. Akhir sekali, kami mengeluarkan rentetan JSON ke konsol, dan kami dapat melihat bahawa ulasan dalam data JSON telah berkuat kuasa.

Perlu diambil perhatian bahawa apabila menyahkod data JSON, kita perlu menghuraikan rentetan ulasan secara manual daripada medan Comment dan mentafsir data JSON berdasarkan kandungannya. Ini akan meningkatkan kerumitan kod, tetapi ia juga merupakan salah satu penyelesaian yang boleh dilaksanakan pada masa ini.

Kaedah 3: Gunakan perpustakaan pihak ketiga

Akhir sekali, kami boleh menggunakan perpustakaan pihak ketiga siap sedia untuk memasukkan ulasan JSON. Pada masa ini, terdapat beberapa perpustakaan JSON Golang yang menyokong penambahan ulasan, seperti json-iterator/go dan easyjson Pustaka ini menyokong penambahan ulasan tanpa menjejaskan format JSON dan sangat mudah digunakan.

Berikut ialah contoh menambah anotasi menggunakan pustaka json-iterator/go:

import "github.com/json-iterator/go"

type User struct {
    Name     string `json:"username"`  // 用户名
    Password string `json:"password"`  // 密码
}

u := User{
    Name:     "alice",
    Password: "123456",
}

json := jsoniter.ConfigCompatibleWithStandardLibrary

data, err := json.Marshal(u)
if err != nil {
    log.Fatal(err)
}

fmt.Println(json.Get(data, "username").Last().GetInterface())

Dalam contoh di atas, kami menggunakan jsoniter.ConfigCompatibleWithStandardLibrary untuk mencipta objek JSON dan menggunakan fungsi Marshal untuk tukar struktur u Tukar kepada rentetan JSON. Akhir sekali, kami menggunakan fungsi json.Get untuk mendapatkan medan yang ditentukan daripada JSON dan menukarnya kepada objek Golang menggunakan fungsi GetInterface. Di sini kami mengeluarkan rentetan ulasan yang sepadan dengan medan nama pengguna ke konsol Anda boleh melihat bahawa ulasan telah berjaya ditambahkan, dan kodnya agak mudah.

Ringkasnya, perkara di atas ialah tiga cara untuk memasukkan ulasan JSON dalam Golang. Setiap kaedah mempunyai kelebihan dan kekurangannya, dan kita harus memilih kaedah yang paling sesuai mengikut keperluan khusus untuk meningkatkan kebolehbacaan kod.

Atas ialah kandungan terperinci golang json masukkan komen. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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 sebelumnya:gelang gmt转utcArtikel seterusnya:gelang gmt转utc