Dalam bahasa Go, pakej pengekodan/json ialah perpustakaan standard untuk memproses data dalam format JSON (JavaScript Object Notation). Dalam pustaka ini, jenis Pengekod disediakan, yang boleh mengekod struktur atau jenis data lain dalam bahasa Go ke dalam data binari yang mematuhi format JSON. Artikel ini akan menerangkan jenis ini secara terperinci dan memberikan contoh kod khusus.
Mari kita lihat definisi jenis Pengekod dahulu:
type Encoder struct { w io.Writer err error h *encodeState generic bool }
Seperti yang dapat dilihat daripada definisi, jenis Pengekod ialah jenis struct dengan empat medan berikut:
Jenis pengekod menyediakan kaedah berikut:
NewEncoder kaedah digunakan untuk mencipta contoh jenis Encoder dan perlu lulus dalam sesuatu io.Writer objek antara muka sebagai parameter. Berikut ialah contoh kod untuk mencipta contoh Pengekod:
package main import ( "encoding/json" "os" ) func main() { type Movie struct { Title string Year int Actors []string } movie := Movie{ Title: "Inception", Year: 2010, Actors: []string{"Leonardo DiCaprio", "Ellen Page", "Tom Hardy"}, } encoder := json.NewEncoder(os.Stdout) encoder.Encode(movie) }
Dalam kod sampel di atas, kami mencipta contoh struktur jenis Filem dan mengekodnya serta mengeluarkannya kepada output standard.
Kaedah Encode digunakan untuk JSON mengekod jenis data masuk (v) dan menulis hasil pengekodan kepada io.Writer objek instance Encoder . Jika ralat berlaku semasa pengekodan, mesej ralat yang sepadan akan dikembalikan. Berikut ialah kod sampel untuk kaedah Pengekodan:
package main import ( "encoding/json" "os" ) func main() { type Movie struct { Title string Year int Actors []string } movie := Movie{ Title: "Inception", Year: 2010, Actors: []string{"Leonardo DiCaprio", "Ellen Page", "Tom Hardy"}, } file, _ := os.Create("movie.json") encoder := json.NewEncoder(file) encoder.Encode(movie) file.Close() }
Dalam kod sampel di atas, kami mencipta contoh struktur jenis Filem, mengekodnya dan menulisnya pada fail movie.json.
Kaedah SetIndent digunakan untuk menetapkan format inden output berkod JSON Ia menerima dua parameter rentetan, masing-masing mewakili "awalan" dan "inden". Berikut ialah kod sampel untuk kaedah SetIndent:
package main import ( "encoding/json" "os" ) func main() { type Movie struct { Title string Year int Actors []string } movie := Movie{ Title: "Inception", Year: 2010, Actors: []string{"Leonardo DiCaprio", "Ellen Page", "Tom Hardy"}, } file, _ := os.Create("movie.json") encoder := json.NewEncoder(file) encoder.SetIndent("", " ") encoder.Encode(movie) file.Close() }
Dalam kod sampel di atas, kami menggunakan kaedah SetIndent untuk menetapkan awalan inden kepada kosong, rentetan inden kepada empat ruang, dan kemudian tulis data format JSON yang dikodkan ke filem fail .json.
Kaedah SetEscapeHTML digunakan untuk menetapkan sama ada objek contoh Pengekod perlu melepaskan teg HTML Nilai lalai adalah benar. Jika parameter on benar, teg HTML akan terlepas jika parameter on palsu, output akan berada dalam format rentetan asal. Berikut ialah contoh kod untuk kaedah SetEscapeHTML:
package main import ( "encoding/json" "os" ) func main() { type Example struct { Name string HTMLBody string `json:"body"` } example := Example{ Name: "example", HTMLBody: "<h1>This is a heading</h1> <p>This is a paragraph.</p>", } file, _ := os.Create("example.json") encoder := json.NewEncoder(file) encoder.SetEscapeHTML(false) encoder.Encode(example) file.Close() }
Dalam kod sampel di atas, kami menggunakan kaedah SetEscapeHTML untuk mengeluarkan teg HTML ke dalam format rentetan asal.
Jenis Pengekod ialah jenis teras yang digunakan untuk pengekodan JSON dalam pakej pengekodan/json dalam bahasa Go Ia menyediakan pemprosesan pengekodan data format JSON adalah dengan menukar struktur atau Menukar jenis data lain kepada data binari mematuhi format JSON dan mengeluarkannya kepada io.Writer yang ditentukan. Apabila menggunakan jenis Pengekod, kami boleh menetapkan parameter pengekodan, melaksanakan pengekodan JSON dan operasi lain dengan memanggil kaedah awamnya.
Atas ialah kandungan terperinci Tafsiran dokumen bahasa Go: Penjelasan terperinci tentang pengekodan/json.Jenis Pengekod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!