Heim  >  Artikel  >  Backend-Entwicklung  >  Warum erscheinen Strukturfelder leer?

Warum erscheinen Strukturfelder leer?

PHPz
PHPznach vorne
2024-02-09 10:54:07741Durchsuche

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

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
}

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen