Bagaimana untuk membuat pengekod JSON tersuai di Golang?
Untuk membuat pengekod JSON tersuai di Golang: laksanakan antara muka pengekodan/json.Marshaler atau pengekodan/json.Unmarshaler. Antara muka Marshaler menyediakan kaedah untuk menukar struktur kepada bait JSON. Antara muka Unmarshaler menyediakan kaedah untuk menyahkod struktur daripada bait JSON.
Buat Pengekod JSON Tersuai di Golang
JSON ialah format popular untuk menghantar data melalui web. Di Golang, struktur boleh dikodkan dan dinyahkod dengan mudah menggunakan perpustakaan standard pengekodan/json
. Walau bagaimanapun, kadangkala anda mungkin perlu mencipta pengekod tersuai untuk memenuhi keperluan khusus. encoding/json
轻松地对结构进行编解码。然而,有时你可能需要创建自定义的编码器来满足特定的需求。
实现自定义 JSON 编码器
为了实现一个自定义 JSON 编码器,需要实现 encoding/json.Marshaler
或 encoding/json.Unmarshaler
接口。
-
Marshaler
接口定义了一个MarshalJSON
方法,该方法将结构转换为 JSON 字节。 -
Unmarshaler
接口定义了一个UnmarshalJSON
方法,该方法从 JSON 字节中解码一个结构。
以下是如何实现一个自定义的 JSON 编码器:
type User struct { ID int Name string } // 实现 Marshaler 接口 func (u User) MarshalJSON() ([]byte, error) { return []byte(`{"user_id": ` + strconv.Itoa(u.ID) + `,"name": "` + u.Name + `"}`), nil } // 实现 Unmarshaler 接口 func (u *User) UnmarshalJSON(data []byte) error { var v map[string]interface{} if err := json.Unmarshal(data, &v); err != nil { return err } id, ok := v["user_id"].(float64) if !ok { return fmt.Errorf("invalid user_id") } u.ID = int(id) u.Name = v["name"].(string) return nil }
该编码器将 User
结构编解码为具有特定格式的 JSON 字段。user_id
编码为整数,而 name
编码为字符串。
实战案例
在以下示例中,我们使用自定义编码器将 User
Melaksanakan pengekod JSON tersuai
Untuk melaksanakan pengekod JSON tersuai, anda perlu melaksanakanpengekodan/json.Marshaler
atau pengekodan/json.Unmarshaler
antara muka. 🎜- Antara muka
Marshaler
mentakrifkan kaedahMarshalJSON
yang menukar struktur kepada bait JSON. - Antara muka
Unmarshaler
mentakrifkan kaedahUnmarshalJSON
yang menyahkod struktur daripada bait JSON.
// 创建一个 User 结构 u := User{ ID: 1, Name: "John Doe", } // 转换为 JSON 并打印 jsonBytes, err := json.Marshal(u) if err != nil { panic(err) } fmt.Println(string(jsonBytes))
user_id
dikodkan sebagai integer dan name
dikodkan sebagai rentetan. 🎜🎜🎜Kes praktikal🎜🎜🎜Dalam contoh berikut, kami menggunakan pengekod tersuai untuk menukar struktur {"user_id": 1,"name": "John Doe"}
Atas ialah kandungan terperinci Bagaimana untuk membuat pengekod JSON tersuai di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Bagaimana untuk membaca dan menulis fail dengan selamat menggunakan Golang?

Bagaimana untuk mengkonfigurasi kolam sambungan untuk sambungan pangkalan data Golang?

Persamaan dan Perbezaan antara Golang dan C++

Seberapa curam keluk pembelajaran seni bina rangka kerja golang?

Bagaimana untuk menjana elemen rawak dari senarai di Golang?

Perbandingan kebaikan dan keburukan rangka kerja golang

Apakah amalan terbaik untuk pengendalian ralat dalam rangka kerja Golang?

arahan penggunaan dokumen rangka kerja golang
