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

Pourquoi les champs de structure apparaissent-ils vides ?

PHPz
PHPzavant
2024-02-09 10:54:07741parcourir

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

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
}

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"`
}

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer