Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mensiri Tatasusunan JSON Jenis Campuran dalam Go?

Bagaimana untuk Mensiri Tatasusunan JSON Jenis Campuran dalam Go?

Patricia Arquette
Lepaskan: 2024-12-07 07:01:12
asal
257 orang telah melayarinya

How to Serialize Mixed-Type JSON Arrays in Go?

Cara Mensirikan Tatasusunan JSON Jenis Campuran dalam Go

Cabaran

Mencipta JSON tatasusunan yang mewakili data heterogen, seperti gabungan rentetan, nombor titik terapung dan aksara unikod, boleh menjadi mencabar dalam Go kerana kekurangan sokongan untuk jenis bercampur dalam tatasusunan.

Penyelesaian

Untuk mengatasi had ini, kami boleh memanfaatkan mekanisme pensirian JSON yang boleh disesuaikan Go dengan melaksanakan antara muka json.Marshaler dan json.Unmarshaler. Dengan mentakrifkan fungsi ini pada jenis tersuai kami, kami mendapat kawalan ke atas cara data kami disiri dan dinyahsiri.

Pensiran (Marshaling)

Untuk mensirikan data jenis campuran kami ke dalam tatasusunan JSON, kami mencipta fungsi MarshalJSON untuk jenis tersuai kami. Dalam fungsi ini, kami mencipta kepingan perantaraan elemen antara muka{} dan mengisinya dengan nilai yang kami mahu sirikan. Kami kemudiannya menggunakan fungsi json.Marshal pada kepingan untuk menjana perwakilan JSON bagi data kami.

Penyahserikatan (Unmarshaling)

Begitu juga, untuk penyahserikatan, kami mencipta Fungsi UnmarshalJSON. Di sini, kami mula-mula menggunakan fungsi json.Unmarshal untuk menghuraikan bait JSON yang masuk ke dalam kepingan perantaraan elemen{} antara muka. Kami kemudiannya mengekstrak nilai secara manual daripada hirisan dan menetapkannya ke medan jenis tersuai kami.

Contoh

Contoh berikut menunjukkan cara mensiri dan menyahsiri campuran -jenis data struktur:

package main

import (
    "encoding/json"
    "fmt"
)

type Row struct {
    Ooid  string
    Score float64
    Text  string
}

func (r *Row) MarshalJSON() ([]byte, error) {
    arr := []interface{}{r.Ooid, r.Score, r.Text}
    return json.Marshal(arr)
}

func main() {
    rows := []Row{
        {"ooid1", 2.0, "Söme text"},
        {"ooid2", 1.3, "Åther text"},
    }
    marshalled, _ := json.Marshal(rows)
    fmt.Println(string(marshalled))
}
Salin selepas log masuk

Kesimpulan

Dengan melaksanakan antara muka json.Marshaler dan json.Unmarshaler, kami memperoleh fleksibiliti untuk mengendalikan struktur data jenis campuran dalam Go. Pendekatan ini membolehkan kami menyesuaikan proses bersiri dan penyahsirilan, menghasilkan format tatasusunan JSON yang diingini.

Atas ialah kandungan terperinci Bagaimana untuk Mensiri Tatasusunan JSON Jenis Campuran 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