Tafsiran dokumen bahasa Go: Penjelasan terperinci tentang pengekodan/json.Jenis Pengekod

WBOY
Lepaskan: 2023-11-03 15:13:18
asal
966 orang telah melayarinya

Tafsiran dokumen bahasa Go: Penjelasan terperinci tentang pengekodan/json.Jenis Pengekod

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.

Definisi jenis Pengekod

Mari kita lihat definisi jenis Pengekod dahulu:

type Encoder struct {
    w       io.Writer
    err     error
    h       *encodeState
    generic bool
}
Salin selepas log masuk

Seperti yang dapat dilihat daripada definisi, jenis Pengekod ialah jenis struct dengan empat medan berikut:

  • w: digunakan untuk pengekodan output Antara muka io.Writer bagi data akhir
  • err: merekodkan maklumat ralat yang mungkin berlaku semasa proses pengekodan
  • h: struktur encodeState yang digunakan untuk menyimpan parameter pengekodan dan cache
  • generik: sama ada pengekod teg menyokong universal pengekodan teg

Kaedah jenis pengekod

Jenis pengekod menyediakan kaedah berikut:

func NewEncoder(w io.Writer) *Encoder

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)
}
Salin selepas log masuk

Dalam kod sampel di atas, kami mencipta contoh struktur jenis Filem dan mengekodnya serta mengeluarkannya kepada output standard.

func (enc *Encoder) Encode(v antara muka{}) error

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()
}
Salin selepas log masuk

Dalam kod sampel di atas, kami mencipta contoh struktur jenis Filem, mengekodnya dan menulisnya pada fail movie.json.

func (enc *Encoder) SetIndent(awalan, rentetan inden)

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()
}
Salin selepas log masuk

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.

func (enc *Encoder) SetEscapeHTML(on bool)

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()
}
Salin selepas log masuk

Dalam kod sampel di atas, kami menggunakan kaedah SetEscapeHTML untuk mengeluarkan teg HTML ke dalam format rentetan asal.

Ringkasan

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!