Home >Backend Development >Golang >Why do structure fields appear empty?

Why do structure fields appear empty?

PHPz
PHPzforward
2024-02-09 10:54:07770browse

Why do structure fields appear empty?

php editor Xinyi will explain to you why the structure fields are displayed as empty. In programming, a structure is a custom data type used to store different types of data. When a structure field appears empty, it may be because the structure was not initialized correctly or a value was not assigned to the field. In addition, it may also be due to field scope issues or structure definition errors. To solve this problem, you can check the initialization section of the code to ensure that the fields are assigned correctly. At the same time, check the definition and scope of the structure to ensure that it can correctly access the field values.

Question content

I'm struggling to get the correct output from the following code:

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

Playground clip

The structure field is empty when printing. I'm sure there's a stupid bug somewhere, but I'm still new to Go and I've been stuck on this problem for a few hours. please help.

Solution

This problem has occurred many times. The problem is that only exported fields can be marshaled/unmarshaled.

Export structure fields starting with an uppercase letter.

type Animal2 struct {
    Name string
    Spec string
    Id   uint32
}

Try it on Go Playground.

Note that the JSON text contains field names in lowercase text, but the json package is "smart" enough to match them. If they are completely different, you can tell the json package how to find them in the JSON text (or how to marshal them) using a struct tag, for example:

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

The above is the detailed content of Why do structure fields appear empty?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:stackoverflow.com. If there is any infringement, please contact admin@php.cn delete