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
Susan Sarandonoriginal
2024-12-08 15:27:15484parcourir

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

Sortie :

{"votes":{"option_A":"3"},"count":1}

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