Maison > développement back-end > Golang > Comment puis-je désorganiser les objets JSON imbriqués sous forme de chaînes ou de tranches d'octets dans Go ?

Comment puis-je désorganiser les objets JSON imbriqués sous forme de chaînes ou de tranches d'octets dans Go ?

Linda Hamilton
Libérer: 2024-12-17 02:18:25
original
541 Les gens l'ont consulté

How Can I Unmarshal Nested JSON Objects as Strings or Byte Slices in Go?

Désorganisation des objets imbriqués JSON sous forme de chaînes ou de tranches d'octets

Dans les données JSON, les objets imbriqués fournissent des niveaux d'informations supplémentaires. Cependant, lors de la désorganisation de ces données dans des structures Go, vous souhaiterez peut-être traiter ces objets comme des données brutes plutôt que comme des valeurs analysées.

Pour y parvenir, le package encoding/json propose une solution : json.RawMessage.

Utiliser RawMessage pour traiter les objets imbriqués comme bruts Data

json.RawMessage est un type qui représente des données JSON codées. Il permet de retarder le décodage JSON ou de précalculer un encodage JSON.

Ceci est particulièrement utile lorsque vous souhaitez gérer des objets imbriqués sous forme de chaînes ou de tranches d'octets. Voici comment vous pouvez l'utiliser :

import (
    "encoding/json"
    "fmt"
)

type Bar struct {
    Id  int64           `json:"id"`
    Foo json.RawMessage `json:"foo"`
}

func main() {
    // Example JSON with a nested object
    jsonStr := []byte(`{
        "id"  : 15,
        "foo" : { "foo": 123, "bar": "baz" }
    }`)

    var bar Bar

    err := json.Unmarshal(jsonStr, &bar)
    if err != nil {
        panic(err)
    }

    fmt.Printf("%+v\n", bar)
}
Copier après la connexion

Exemple de sortie

{Id:15 Foo:[123 32 34 102 111 111 34 58 32 49 50 51 44 32 34 98 97 114 34 58 32 34 98 97 122 34 32 125]}
Copier après la connexion

En utilisant json.RawMessage, vous pouvez traiter l'objet imbriqué comme une chaîne brute ou tranche d'octets. Cela vous permet de traiter davantage les données ou de les stocker pour une utilisation ultérieure.

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!

source:php.cn
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