Maison > développement back-end > Golang > Pourquoi JSON désassemblant un tableau dans une structure Go provoque-t-il une panique ?

Pourquoi JSON désassemblant un tableau dans une structure Go provoque-t-il une panique ?

Linda Hamilton
Libérer: 2024-12-16 10:49:10
original
878 Les gens l'ont consulté

Why Does JSON Unmarshaling an Array into a Go Struct Cause a Panic?

Panique : JSON Unmarshal Array dans Go Struct

Lors de la tentative d'analyse des données d'une API JSON, vous avez rencontré l'erreur : "panique : json : impossible de désorganiser le tableau en valeur Go de type main.Structure." Le problème survient lors de la désorganisation d'un tableau JSON dans une structure Go.

Votre code :

type Structure struct {
        stuff []interface{}
}

func main() {
        // ...

        decoded := &Structure{}
        err = json.Unmarshal(body, decoded)
}
Copier après la connexion

Résultat attendu :

Vous vous attendiez à ce que le code renvoie une liste d'objets d'interface.

Réel Résultat :

Au lieu de cela, vous avez reçu une erreur indiquant que le tableau JSON n'a pas pu être désorganisé dans la valeur Structure Go.

Solution :

Pour résoudre ce problème, considérez deux approches :

  1. Unmarshal to a Slice :

    Remplacez la ligne :

    decoded := &Structure{}
    Copier après la connexion

    par :

    var data []interface{}
    Copier après la connexion

    Cela décomposera le tableau JSON en une tranche de interfaces.

  2. Démarrer vers une tranche de structures :

    Créer des structures spécifiques pour la structure de données de réponse. Par exemple :

    type Tick struct {
      ID string
      Name string
      Symbol string
      Rank string
      Price_USD string
    }
    Copier après la connexion

    Ensuite, désassemblez une tranche de ces structures :

    var data []Tick
    err = json.Unmarshal(body, &data)
    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
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