Maison >développement back-end >Golang >Comment puis-je définir des valeurs par défaut pour les champs JSON manquants dans Go ?

Comment puis-je définir des valeurs par défaut pour les champs JSON manquants dans Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-18 17:40:15247parcourir

How Can I Set Default Values for Missing JSON Fields in Go?

Personnalisation des valeurs par défaut de l'analyse JSON dans Go

Lors de l'analyse de JSON dans Go, l'attribution de valeurs par défaut à des champs qui ne sont pas présents peut améliorer la manipulation des données. Voici comment y parvenir en utilisant le package encoding/json ou en tirant parti d'une bibliothèque Go externe.

Utiliser encoding/json

Le package encoding/json offre une solution simple . Au lieu de transmettre une structure vide à json.Unmarshal, vous pouvez l'initialiser avec les valeurs par défaut. Par exemple :

type Test struct {
    A string "a"
    B string "b"
    C string
}

example := []byte(`{"A": "1", "C": "3"}`)

out := Test{}
err := json.Unmarshal(example, &out)
if err != nil {
    panic(err)
}
fmt.Printf("%+v", out)

Utilisation de bibliothèques externes

Si le package encoding/json ne répond pas entièrement à vos besoins, il existe des bibliothèques Go externes qui fournissent un JSON amélioré fonctionnalité d'analyse. Une option populaire est la bibliothèque go-json, qui vous permet de spécifier des valeurs par défaut pour les champs manquants à l'aide de balises struct.

import (
    "encoding/json"
    "github.com/go-json"
)

type Test struct {
    A string `json:"a,omitempty"`
    B string `json:"b,omitempty"`
    C string `json:"c,omitempty"`
}

example := []byte(`{"A": "1", "C": "3"}`)

out := Test{
    DefaultA: "a",
    DefaultB: "b",
    DefaultC: "c",
}

err := json.Unmarshal(example, &out)
if err != nil {
    panic(err)
}
fmt.Printf("%+v", out)

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