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
Patricia Arquetteoriginal
2024-12-13 03:48:10527parcourir

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

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:
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