Maison > développement back-end > Golang > Pourquoi les champs de structure apparaissent-ils vides ?

Pourquoi les champs de structure apparaissent-ils vides ?

PHPz
Libérer: 2024-02-09 10:54:07
avant
771 Les gens l'ont consulté

Pourquoi les champs de structure apparaissent-ils vides ?

l'éditeur php Xinyi vous expliquera pourquoi le champ structure est affiché vide. En programmation, une structure est un type de données personnalisé utilisé pour stocker différents types de données. Lorsqu'un champ de structure apparaît vide, cela peut être dû au fait que la structure n'a pas été initialisée correctement ou qu'une valeur n'a pas été attribuée au champ. En outre, cela peut également être dû à des problèmes de portée de champ ou à des erreurs de définition de structure. Pour résoudre ce problème, vous pouvez vérifier la section d'initialisation du code pour vous assurer que les champs sont correctement attribués. En parallèle, vérifiez la définition et la portée de la structure pour vous assurer qu'elle peut accéder correctement aux valeurs des champs.

Contenu de la question

J'essaie d'obtenir le résultat correct à partir du code suivant :

package main

import (
    "encoding/json"
    "fmt"
)

func main() {

    var jsonBlob3 = []byte(`[
        {"name": "Platypus", "spec": "Monotremata", "id":25 },
        {"name": "Quoll",    "spec": "Dasyuromorphia", "id":25 }
    ]`)
    type Animal2 struct {
        name  string
        spec string
        id uint32
    }
    var animals []Animal2
    err := json.Unmarshal(jsonBlob3, &animals)
    if err != nil {
        fmt.Println("error:", err)
    }
    fmt.Printf("%+v\n", animals)
}
Copier après la connexion

Clip d'aire de jeux

Le champ structure est vide lors de l'impression. Je suis sûr qu'il y a un bug stupide quelque part, mais je suis encore nouveau sur Go et je suis bloqué sur ce problème depuis quelques heures. s'il vous plaît, aidez-moi.

Solution

Ce problème est apparu plusieurs fois. Le problème est que seuls les champs exportés peuvent être marshalés/non marshalés.

Exportez les champs de structure commençant par une lettre majuscule.

type Animal2 struct {
    Name string
    Spec string
    Id   uint32
}
Copier après la connexion

Essayez-le sur Go Playground.

Notez que le texte JSON contient des noms de champs en minuscules, mais json 包“聪明”足以匹配它们。如果它们完全不同,您可以使用 struct 标签告诉 json comment le package les trouve-t-il (ou comment les rassembler) dans le texte JSON, par exemple :

type Animal2 struct {
    Name string `json:"json_name"`
    Spec string `json:"specification"`
    Id   uint32 `json:"some_custom_id"`
}
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!

Étiquettes associées:
source:stackoverflow.com
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