Maison  >  Article  >  développement back-end  >  Interprétation du document en langue Go : explication détaillée du type d'encodage/json.Encoder

Interprétation du document en langue Go : explication détaillée du type d'encodage/json.Encoder

WBOY
WBOYoriginal
2023-11-03 15:13:18925parcourir

Interprétation du document en langue Go : explication détaillée du type dencodage/json.Encoder

Dans le langage Go, le package encoding/json est une bibliothèque standard de traitement des données au format JSON (JavaScript Object Notation). Dans cette bibliothèque, un type Encoder est fourni, qui peut encoder des structures ou d'autres types de données dans le langage Go en données binaires conformes au format JSON. Cet article expliquera ce type en détail et fournira des exemples de code spécifiques.

Définition du type Encoder

Jetons d'abord un coup d'œil à la définition du type Encoder :

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

Comme le montre la définition, le type Encoder est un type struct avec les quatre champs suivants :

  • w : utilisé pour l'encodage de sortie L'interface io.Writer des données finales
  • err : enregistre les informations d'erreur pouvant survenir pendant le processus d'encodage
  • h : la structure encodeState utilisée pour stocker les paramètres d'encodage et le cache
  • generic : si l'encodeur de balises prend en charge l'universel balises d'encodage

Méthodes de type Encoder

Le type Encoder fournit les méthodes suivantes :

func NewEncoder(w io.Writer) *Encoder

La méthode NewEncoder est utilisée pour créer une instance de type Encoder et doit passer dans un io.Writer objet d'interface comme paramètres. Voici un exemple de code pour créer une instance Encoder :

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)
}

Dans l'exemple de code ci-dessus, nous créons une instance de structure de type Movie, l'encodons et la sortons sur la sortie standard.

erreur func (enc *Encoder) Encode(v interface{})

La méthode Encode est utilisée pour encoder JSON le type de données entrant (v) et écrire le résultat de l'encodage dans le io.Writer de l'objet d'instance Encoder. Si une erreur se produit lors de l'encodage, le message d'erreur correspondant sera renvoyé. Voici un exemple de code pour la méthode Encode :

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()
}

Dans l'exemple de code ci-dessus, nous créons une instance de structure de type Movie, l'encodons et l'écrivons dans le fichier movie.json.

func (enc *Encoder) SetIndent(prefix, indent string)

La méthode SetIndent est utilisée pour définir le format d'indentation de la sortie codée JSON. Elle reçoit deux paramètres de chaîne, représentant respectivement "préfixe" et "indent". Voici un exemple de code pour la méthode 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()
}

Dans l'exemple de code ci-dessus, nous utilisons la méthode SetIndent pour définir le préfixe d'indentation sur vide, la chaîne d'indentation sur quatre espaces, puis écrivons les données codées au format JSON dans le film. Fichier .json.

func (enc *Encoder) SetEscapeHTML(on bool)

La méthode SetEscapeHTML est utilisée pour définir si l'objet d'instance Encoder doit échapper aux balises HTML. Si le paramètre on est vrai, la balise HTML sera échappée ; si le paramètre on est faux, la sortie sera au format de chaîne d'origine. Voici un exemple de code pour la méthode 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()
}

Dans l'exemple de code ci-dessus, nous utilisons la méthode SetEscapeHTML pour générer la balise HTML dans le format de chaîne d'origine.

Résumé

Le type Encoder est un type de base utilisé pour l'encodage JSON dans le package encoding/json du langage Go. Il fournit le traitement d'encodage des données au format JSON. Son principe de mise en œuvre consiste à convertir des structures ou à convertir d'autres types de données en données binaires. conforme au format JSON et affichez-le sur le io.Writer spécifié. Lors de l'utilisation du type Encoder, nous pouvons définir les paramètres d'encodage, effectuer l'encodage JSON et d'autres opérations en appelant ses méthodes publiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn