Warum erscheinen Strukturfelder leer?

PHPz
Freigeben: 2024-02-09 10:54:07
nach vorne
740 Leute haben es durchsucht

Warum erscheinen Strukturfelder leer?

Der PHP-Editor Xinyi erklärt Ihnen, warum das Strukturfeld leer angezeigt wird. In der Programmierung ist eine Struktur ein benutzerdefinierter Datentyp, der zum Speichern verschiedener Datentypen verwendet wird. Wenn ein Strukturfeld leer erscheint, kann dies daran liegen, dass die Struktur nicht korrekt initialisiert wurde oder dem Feld kein Wert zugewiesen wurde. Darüber hinaus kann es auch an Problemen mit dem Feldumfang oder Fehlern bei der Strukturdefinition liegen. Um dieses Problem zu lösen, können Sie den Initialisierungsabschnitt des Codes überprüfen, um sicherzustellen, dass die Felder korrekt zugewiesen sind. Überprüfen Sie gleichzeitig die Definition und den Umfang der Struktur, um sicherzustellen, dass diese korrekt auf die Feldwerte zugreifen kann.

Frageninhalt

Ich versuche, die richtige Ausgabe aus dem folgenden Code zu erhalten:

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)
}
Nach dem Login kopieren

Spielplatz-Clip

Das Strukturfeld ist beim Drucken leer. Ich bin mir sicher, dass es irgendwo einen dummen Fehler gibt, aber ich bin noch ein Go-Neuling und hänge schon seit ein paar Stunden an diesem Problem fest. Bitte helfen Sie.

Lösung

Dieses Problem ist schon oft aufgetreten. Das Problem besteht darin, dass nur exportierte Felder gemarshallt/entmarshallt werden können.

Strukturfelder exportieren, die mit einem Großbuchstaben beginnen.

type Animal2 struct {
    Name string
    Spec string
    Id   uint32
}
Nach dem Login kopieren

Probieren Sie es auf Go Playground aus.

Beachten Sie, dass der JSON-Text Feldnamen in Kleinbuchstaben enthält, aber json 包“聪明”足以匹配它们。如果它们完全不同,您可以使用 struct 标签告诉 jsonwie findet das Paket sie im JSON-Text (oder wie werden sie gemarshallt), zum Beispiel:

type Animal2 struct {
    Name string `json:"json_name"`
    Spec string `json:"specification"`
    Id   uint32 `json:"some_custom_id"`
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum erscheinen Strukturfelder leer?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!