Rumah > pembangunan bahagian belakang > Golang > golang melaksanakan json

golang melaksanakan json

王林
Lepaskan: 2023-05-27 14:37:09
asal
1602 orang telah melayarinya

Golang ialah bahasa pengaturcaraan yang sangat popular dan digunakan secara meluas dalam bidang seperti pelayan rangkaian, pemprosesan data besar Internet dan pembangunan algoritma. Antaranya, Golang menyediakan mekanisme lengkap untuk pensirilan data dan penyahsirilan, yang paling penting ialah sokongan untuk data format JSON. Artikel ini akan meneroka cara Golang melaksanakan pensirilan dan penyahsirilan data JSON.

1. Pengenalan kepada JSON

JSON adalah singkatan dari JavaScript Object Notation, format pertukaran data ringan yang mudah dibaca, ditulis dan dihuraikan. Ia pertama kali dicadangkan oleh Douglas Crockford pada tahun 2001 dan ditakrifkan secara rasmi dalam RFC 7159. Data dalam format JSON terdiri daripada pasangan nilai kunci Nama kunci ialah rentetan, dan nilainya boleh menjadi rentetan, nombor, nilai Boolean, tatasusunan, objek dan nol.

Format asas data JSON adalah seperti berikut:

{
    "name": "Jack",
    "age": 30,
    "address": {
        "city": "New York",
        "zip": 10001
    },
    "hobbies": ["Swimming", "Reading"]
}
Salin selepas log masuk

2. Pemprosesan JSON Golang

Golang menyediakan pemprosesan data JSON melalui pakej "pengekodan/json" dalam sokongan pemprosesan perpustakaan standard. Pakej ini mengandungi fungsi untuk pengekodan dan penyahkodan JSON, yang membolehkan kami menukar struct (jenis struktur) dalam bahasa Go kepada tatasusunan bait JSON atau sebaliknya.

Sebelum menggunakan pakej ini, anda perlu memahami beberapa konsep asas.

  1. Marshal dan Unmarshal

Di Golang, proses menukar jenis data bahasa Go kepada data format JSON dipanggil Marshal, dan data JSON ditukar kepada bahasa Go Prosesnya jenis data dipanggil Unmarshal.

  1. Struct Tag

Di Golang, medan dalam jenis struktur boleh dianotasi dengan teg struktur (Struct Tag). Teg ini boleh menyesuaikan nama, jenis dan saiz medan semasa pengekodan dan penyahkodan JSON.

Contohnya adalah seperti berikut:

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

Dalam contoh ini, struktur Orang mengandungi tiga medan: Nama, Umur dan Alamat. Memandangkan kaedah penamaan standard JSON tidak konsisten dengan huruf pertama huruf kecil yang biasa digunakan dalam bahasa Go, kami perlu menggunakan teg json untuk memberitahu fungsi pengekodan dan penyahkodan JSON nama medan yang hendak digunakan semasa mengekod data.

3. Pengekodan data JSON

Di Golang, proses menukar jenis data dalam bahasa Go kepada data format JSON dipanggil Marshal. Proses ini menggunakan fungsi "json.Marshal()" dalam pakej "pengekodan/json".

Berikut ialah contoh penggunaan fungsi json.Marshal() untuk mengekod jenis data dalam Golang ke dalam data berformat JSON:

package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name    string `json:"name"`
    Age     int    `json:"age"`
    Address string `json:"address"`
}

func main() {
    p := Person{
        Name:    "Tom",
        Age:     20,
        Address: "Shanghai",
    }

    data, err := json.Marshal(p)
    if err != nil {
        fmt.Println("Json marshal error:", err)
        return
    }

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

Outputnya adalah seperti berikut:

{"name":"Tom","age":20,"address":"Shanghai"}
Salin selepas log masuk

Di atas Dalam kod, kami mentakrifkan jenis struktur Orang dan memberikan setiap medan jenis struktur ini tag json. Dalam fungsi utama, kami mencipta contoh p jenis Person dan menggunakan fungsi json.Marshal() untuk mengekodnya ke dalam data format JSON. Hasil akhir ialah tatasusunan bait, yang perlu ditukar kepada rentetan menggunakan fungsi string().

4. Penyahkodan data JSON

Di Golang, proses menukar data format JSON kepada jenis data bahasa Go dipanggil Unmarshal. Proses ini menggunakan fungsi "json.Unmarshal()" dalam pakej "encoding/json".

Berikut ialah contoh menggunakan fungsi json.Unmarshal() untuk menyahkod data berformat JSON ke dalam jenis data dalam Golang:

package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name    string `json:"name"`
    Age     int    `json:"age"`
    Address string `json:"address"`
}

func main() {
    jsonString := `{"name":"Tom","age":20,"address":"Shanghai"}`

    var p Person
    err := json.Unmarshal([]byte(jsonString), &p)
    if err != nil {
        fmt.Println("Json Unmarshal error:", err)
        return
    }

    fmt.Println(p.Name, p.Age, p.Address)
}
Salin selepas log masuk

Outputnya adalah seperti berikut:

rreee

Di atas Dalam kod, kami mula-mula mentakrifkan rentetan dalam format JSON, mewakili contoh jenis Orang. Kami kemudian menggunakan fungsi json.Unmarshal() untuk menyahkodnya kepada jenis data dalam Golang. Dalam proses ini, kita mesti menyediakan pembolehubah yang tidak dimulakan sebagai pembolehubah sasaran untuk menyimpan hasil penyahkodan. Dalam contoh ini, kami menggunakan pembolehubah jenis struktur Orang bernama p. Fungsi ini juga menerima penunjuk kepada tatasusunan bait sebagai parameter kedua untuk memegang data yang dinyahkod.

5. Kesimpulan

Artikel ini memperkenalkan kaedah pengekodan dan penyahkodan data JSON melalui Golang. Proses ini sangat praktikal apabila kita berurusan dengan tugasan yang memerlukan interaksi dengan pelbagai API Internet. Di samping itu, dalam proses pemprosesan penghantaran data, menguasai JSON masih sangat penting. Jika anda ingin mengetahui lebih lanjut tentang cara memproses data JSON di Golang, sila semak dokumentasi rasmi untuk penerangan pakej "pengekodan/json".

Atas ialah kandungan terperinci golang melaksanakan json. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan