Maison > développement back-end > Golang > le corps du texte

Interprétation des documents en langage Go : explication détaillée de l'interface encoding/json.Unmarshaler

WBOY
Libérer: 2023-11-04 16:48:25
original
1193 Les gens l'ont consulté

Interprétation des documents en langage Go : explication détaillée de linterface encoding/json.Unmarshaler

Interprétation des documents en langage Go : Explication détaillée de l'interface encoding/json.Unmarshaler, des exemples de code spécifiques sont requis

Introduction :
Dans le langage Go, le package encoding/json fournit une série de fonctions et d'interfaces pour gérer le l’encodage et le décodage des données JSON fonctionnent. Parmi eux, l'interface json.Unmarshaler joue un rôle important dans le décodage des données JSON. Cet article expliquera en détail l'interface json.Unmarshaler et fournira des exemples de code spécifiques.

  1. Introduction à l'interface json.Unmarshaler : L'interface
    json.Unmarshaler définit une méthode pour un type personnalisé permettant de contrôler la manière dont les données JSON sont décodées. L'interface est définie comme suit :

    type Unmarshaler interface {
     UnmarshalJSON([]byte) error
    }
    Copier après la connexion

    Unmarshaler n'a qu'une seule méthode d'erreur UnmarshalJSON([]byte), qui est utilisée pour décoder la tranche d'octets JSON entrante et la convertir en type cible.

  2. Utilisez l'interface json.Unmarshaler :
    Pour utiliser l'interface Unmarshaler dans un type personnalisé, vous devez implémenter la méthode d'erreur UnmarshalJSON([]byte). Voici un exemple de code :
package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name  string `json:"name"`
    Age   int    `json:"age"`
    Email string `json:"email"`
}

func (p *Person) UnmarshalJSON(data []byte) error {
    var v struct {
        Name  string `json:"Name"`
        Age   int    `json:"Age"`
        Email string `json:"Email"`
    }

    err := json.Unmarshal(data, &v)
    if err != nil {
        return err
    }

    p.Name = v.Name
    p.Age = v.Age
    p.Email = v.Email

    return nil
}

func main() {
    data := []byte(`{"Name":"John Doe","Age":30,"Email":"johndoe@example.com"}`)

    var p Person
    err := json.Unmarshal(data, &p)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }

    fmt.Println("Name:", p.Name)
    fmt.Println("Age:", p.Age)
    fmt.Println("Email:", p.Email)
}
Copier après la connexion

Dans le code ci-dessus, nous définissons une structure Personne, dans laquelle les champs Nom, Âge et Email représentent respectivement le nom, l'âge et l'e-mail. La méthode d'erreur UnmarshalJSON([]byte) est implémentée dans la structure Person, à travers laquelle la tranche d'octets JSON entrante est décodée en un objet de type Personne.

Dans la fonction principale, nous définissons une donnée json puis la décodons en un objet p de type Person. Enfin, imprimez chaque champ de Personne.

  1. Résumé :
    En implémentant l'interface json.Unmarshaler, nous pouvons personnaliser le type de méthode de décodage JSON. L'utilisation de l'interface json.Unmarshaler permet de traiter les données JSON de manière plus flexible et de s'adapter à diverses exigences de décodage complexes.

J'espère que cet article vous aidera à comprendre le rôle et l'utilisation de l'interface json.Unmarshaler.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!