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!