Maison > développement back-end > Golang > Golang peut-il utiliser plusieurs balises JSON pour un seul champ de structure ?

Golang peut-il utiliser plusieurs balises JSON pour un seul champ de structure ?

Patricia Arquette
Libérer: 2024-12-13 03:48:10
original
626 Les gens l'ont consulté

Can Golang Use Multiple JSON Tags for a Single Struct Field?

Alias ​​de balise JSON en Golang

Dans Golang, la balise json struct est utilisée pour spécifier le nom de champ JSON correspondant à un champ struct. Cependant, est-il possible d'attribuer plusieurs noms à un seul champ ?

La réponse est oui, mais pas avec le package encoding/json de la bibliothèque standard. Pour y parvenir, vous pouvez utiliser des bibliothèques JSON tierces telles que github.com/json-iterator/go.

Utilisation de jsoniter

Avec jsoniter, vous pouvez définir plusieurs balises JSON à l'aide de la propriété newtag. Voici un exemple :

package main

import (
    "fmt"
    "github.com/json-iterator/go"
)

type TestJson struct {
    Name string `json:"name" newtag:"newname"`
    Age  int    `json:"age" newtag:"newage"`
}

func main() {
    var json = jsoniter.ConfigCompatibleWithStandardLibrary
    data := TestJson{}
    data.Name = "zhangsan"
    data.Age = 22
    byt, _ := json.Marshal(&data)
    fmt.Println(string(byt)) // {"name":"zhangsan","age":22}

    var newJson = jsoniter.Config{
        TagKey: "newtag",
    }.Froze()

    byt, _ = newJson.Marshal(&data)
    fmt.Println(string(byt)) // {"newname":"zhangsan","newage":22}
}
Copier après la connexion

Dans cet exemple, la structure TestJson définit plusieurs balises JSON pour les champs Nom et Âge. Lors de la sérialisation à l'aide du package json de la bibliothèque standard, la balise json par défaut est utilisée. Cependant, lors de l'utilisation de jsoniter avec la configuration newtag, il utilise à la place les valeurs newtag spécifiées.

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 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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal