Maison > développement back-end > Golang > Comment puis-je ajouter une propriété « count » aux données JSON dynamiques dans Go ?

Comment puis-je ajouter une propriété « count » aux données JSON dynamiques dans Go ?

Susan Sarandon
Libérer: 2024-12-08 15:27:15
original
571 Les gens l'ont consulté

How Can I Add a

Décodage JSON avec structure dynamique

Lorsque vous traitez des données JSON de structure inconnue ou variable, il devient difficile de les décoder à l'aide de structures prédéfinies dans Aller. Pour surmonter ce problème, nous pouvons utiliser une approche plus flexible.

Solution : Désassembler dans une carte

Tout d'abord, nous décomposons le JSON dans une interface map[string] {}, qui est une structure de données de type flexible dans Go. Cela nous permet d'accéder aux propriétés JSON sous forme de chaînes et à leurs valeurs correspondantes sous forme d'interfaces génériques.

Ajout de la propriété "count"

Une fois le JSON désorganisé dans une carte , nous pouvons le manipuler librement. Dans ce cas, nous pouvons attribuer une nouvelle paire clé-valeur avec la clé "count" et la valeur étant le nombre souhaité.

Marshaling Back to JSON

Enfin , nous regroupons la carte modifiée dans une chaîne JSON. Ce processus implique la sérialisation de la carte au format JSON, qui produira la sortie souhaitée avec la propriété « count » ajoutée.

Exemple de code

package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    in := []byte(`{ "votes": { "option_A": "3" } }`)

    // Unmarshal into a map
    var raw map[string]interface{}
    if err := json.Unmarshal(in, &raw); err != nil {
        panic(err)
    }

    // Add the "count" property
    raw["count"] = 1

    // Marshal back to JSON
    out, err := json.Marshal(raw)
    if err != nil {
        panic(err)
    }

    fmt.Println(string(out))
}
Copier après la connexion

Sortie :

{"votes":{"option_A":"3"},"count":1}
Copier après la connexion

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