Rumah > Artikel > pembangunan bahagian belakang > json, xml dan kaedah pengekodan dan penyahkodan protobuf bagi fungsi Golang
Golang ialah bahasa pengaturcaraan sumber terbuka yang digunakan secara meluas dalam pembangunan aplikasi rangkaian. Di Golang, ia bukan sahaja menyediakan perpustakaan fungsi yang kaya, tetapi juga menyediakan pelbagai kaedah pengekodan dan penyahkodan, termasuk json, xml dan protobuf. Artikel ini akan memperkenalkan kaedah pengekodan dan penyahkodan json, xml dan protobuf bagi fungsi Golang dan penggunaannya.
1. Pengekodan dan penyahkodan json
1.1 Pengekodan
Di Golang, pengekodan struktur ke dalam format json adalah sangat mudah. Hanya gunakan fungsi Marshal dalam pakej json untuk mengekod struktur ke dalam data json.
Sebagai contoh, kita mempunyai struktur seperti berikut:
type Student struct { Name string `json:"name"` Age int `json:"age"` Address string `json:"address"` }
Jika kita ingin mengekod struktur ini ke dalam format json, kita boleh melakukan ini:
s := Student{ Name: "张三", Age: 18, Address: "北京市朝阳区", } b, err := json.Marshal(s) if err != nil { //错误处理 } fmt.Println(string(b))
Format json output adalah seperti berikut :
{ "name": "张三", "age": 18, "address": "北京市朝阳区" }
1.2 Penyahkodan
Begitu juga, ia juga sangat mudah untuk menggunakan fungsi Unmarshal dalam pakej json untuk menyahkod data json ke dalam struktur. Hanya hantar data json ke dalam fungsi Unmarshal.
Sebagai contoh, kita mempunyai data json berikut:
data := `{ "name": "李四", "age": 20, "address": "上海市浦东新区" }`
Jika kita ingin menyahkod data json ini ke dalam struktur, kita boleh melakukan ini:
var s Student err := json.Unmarshal([]byte(data), &s) if err != nil { //错误处理 } fmt.Println(s.Name, s.Age, s.Address)
Hasil output ialah:
李四 20 上海市浦东新区
2. Pengekodan dan penyahkodan XML
2.1 Pengekodan
Di Golang, struktur juga boleh dikodkan ke dalam format xml. Hanya gunakan fungsi Marshal dalam pakej pengekodan/xml.
Sebagai contoh, kami mempunyai struktur seperti berikut:
type Student struct { Name string `xml:"name"` Age int `xml:"age"` Address string `xml:"address"` }
Jika kami ingin mengekod struktur ini ke dalam format xml, kami boleh melakukan ini:
s := Student{ Name: "张三", Age: 18, Address: "北京市朝阳区", } b, err := xml.Marshal(s) if err != nil { //错误处理 } fmt.Println(string(b))
Output xml format As berikut:
<Student> <name>张三</name> <age>18</age> <address>北京市朝阳区</address> </Student>
2.2 Penyahkodan
Begitu juga, ia juga sangat mudah untuk menggunakan fungsi Unmarshal dalam pakej pengekodan/xml untuk menyahkod data xml ke dalam struktur. Hanya hantar data xml ke dalam fungsi Unmarshal.
Sebagai contoh, kami mempunyai data xml berikut:
data := ` <Student> <name>李四</name> <age>20</age> <address>上海市浦东新区</address> </Student>`
Jika kami ingin menyahkod data xml ini ke dalam struktur, kami boleh melakukan ini:
var s Student err := xml.Unmarshal([]byte(data), &s) if err != nil { //错误处理 } fmt.Println(s.Name, s.Age, s.Address)
Hasil output ialah:
李四 20 上海市浦东新区
3. pengekodan dan penyahkodan protobuf
3.1 Pasang protobuf
Sebelum pengekodan dan penyahkodan protobuf, protobuf perlu dipasang terlebih dahulu. Kaedah pemasangan adalah seperti berikut:
./configure make make check sudo make install sudo ldconfig
Jika maklumat serupa seperti berikut adalah output, ini bermakna protobuf telah berjaya dipasang:
protoc --version
3.2 Menulis fail protobuf
Sebelum pengekodan dan penyahkodan protobuf, anda perlu menulis fail protobuf. Dalam fail protobuf, anda perlu menentukan jenis Mesej dan menetapkan teg kepada setiap medan.
Sebagai contoh, kami menulis fail protobuf seperti berikut:
libprotoc 3.6.1
Dalam protobuf, tag ialah nilai integer yang digunakan untuk mengenal pasti setiap medan. Dalam contoh ini, medan nama ditetapkan kepada 1, medan umur ditetapkan kepada 2 dan medan alamat ditetapkan kepada 3.
3.3 Pengekodan
Di Golang, pengekodan menggunakan protobuf adalah sangat mudah. Hanya gunakan fungsi Marshal dalam pakej protobuf.
Sebagai contoh, kami mempunyai struktur seperti berikut:
syntax = "proto3"; package main; message Student { string name = 1; int32 age = 2; string address = 3; }
Pengekodan protobuf output adalah seperti berikut:
s := &pb.Student{ Name: "张三", Age: 18, Address: "北京市朝阳区", } b, err := proto.Marshal(s) if err != nil { //错误处理 } fmt.Println(string(b))
3.4 Penyahkodan
Begitu juga, gunakan pakej protobuf Fungsi Unmarshal untuk menyahkod data protobuf ke dalam struktur juga sangat mudah. Hanya hantar data protobuf dan jenis Mesej ke dalam fungsi Unmarshal.
Sebagai contoh, kita mempunyai data protobuf berikut:
1:6 2:18 3:"北京市朝阳区"
Jika kita ingin menyahkod data protobuf ini kepada struktur, kita boleh melakukan ini:
data := []byte{0x0a, 0x06, 0xe5, 0xbc, 0xa0, 0xe4, 0xb8, 0x89, 0x10, 0x12, 0x0f, 0xe5, 0x8c, 0x97, 0xe4, 0xba, 0xac, 0xe5, 0x9b, 0xbd, 0xe5, 0x8c, 0x9d, 0xe5, 0x8c, 0x97, 0xe5, 0x8c, 0x80, 0x1a, 0x0d, 0xe5, 0x8c, 0x97, 0xe4, 0xba, 0xac, 0xe5, 0x9b, 0xbd, 0xe5, 0x8c, 0x9d}
Hasil output ialah:
var s pb.Student err := proto.Unmarshal(data, &s) if err != nil { //错误处理 } fmt.Println(s.Name, s.Age, s.Address)
Ringkasan
Di Golang, pelbagai kaedah pengekodan dan penyahkodan disediakan untuk memenuhi keperluan senario yang berbeza. pengekodan dan penyahkodan json, pengekodan dan penyahkodan xml, dan pengekodan dan penyahkodan protobuf adalah kaedah pengekodan dan penyahkodan yang biasa digunakan dan mempunyai kebolehgunaan yang luas. Menguasai codec ini boleh membantu kami membangunkan aplikasi rangkaian dengan lebih mudah.
Atas ialah kandungan terperinci json, xml dan kaedah pengekodan dan penyahkodan protobuf bagi fungsi Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!