Heim >Backend-Entwicklung >Golang >Wie kann ich den Tag-Schlüssel von JSON mit der Go-Struktur anzeigen?

Wie kann ich den Tag-Schlüssel von JSON mit der Go-Struktur anzeigen?

PHPz
PHPznach vorne
2024-02-13 10:12:061261Durchsuche

如何用go struct查看json的标签键?

Frageninhalt

Ich lerne https://www.digitalocean.com/community/tutorials/how-to-use-json-in-go#using-a-struct-to-generate-json(go alte Version).

Ich verwende Go 1.20.1, Windows 11 x64, Goland 2022.3.2.

package sample3

import (
    foo "encoding/json"
    "fmt"
    "time"
)

type myjson struct {
    intvalue        int       `json:"intvalue"`
    boolvalue       bool      `json:"boolvalue"`
    stringvalue     string    `json:"stringvalue"`
    datevalue       time.time `json:"datevalue"`
    objectvalue     *myobject `json:"objectvalue"`
    nullstringvalue *string   `json:"nullstringvalue"`
    nullintvalue    *int      `json:"nullintvalue"`
}

type myobject struct {
    arrayvalue []int `json:"arrayvalue"`
}

func main3() {
    otherint := 4321
    data := &myjson{
        intvalue:    1234,
        boolvalue:   true,
        stringvalue: "hello!",
        datevalue:   time.date(2022, 3, 2, 9, 10, 0, 0, time.utc),
        objectvalue: &myobject{
            arrayvalue: []int{1, 2, 3, 4},
        },
        nullstringvalue: nil,
        nullintvalue:    &otherint,
    }
    fmt.println(foo.marshal(data))
    fmt.println(data)

    type myint struct {
        intvalue int
    }

    data2 := &myint{intvalue: 1234}
    fmt.println(foo.marshal(data2))

}

OK

fmt.println(foo.marshal(data))

Rückkehr

&{1234 true hello! 2022-03-02 09:10:00 +0000 UTC 0xc000008240 <nil> 0xc00001a170}

Ich möchte es überprüfen {"intvalue": 1234, "boolvalue": true, ...}, bitte leiten Sie mich.

Vollständiger Quellcode https://github.com/donhuvy/vy_learn_go_json2023/blob/main/sample3/main3.go#l36

Warum verursacht meine Verwendung von fmt.println(string(json.marshal(data))) einen Fehler?

Lösung

Normalerweise verwende ich eine JSON-Kodierungsbibliothek. Schauen Sie sich das folgende Beispiel an:

package main

import (
    "encoding/json"
    "time"
)

type myjson struct {
    intvalue        int       `json:"intvalue"`
    boolvalue       bool      `json:"boolvalue"`
    stringvalue     string    `json:"stringvalue"`
    datevalue       time.time `json:"datevalue"`
    objectvalue     *myobject `json:"objectvalue"`
    nullstringvalue *string   `json:"nullstringvalue"`
    nullintvalue    *int      `json:"nullintvalue"`
}

type myobject struct {
    arrayvalue []int `json:"arrayvalue"`
}

func main() {
    otherint := 4321
    data := &myjson{
        intvalue:    1234,
        boolvalue:   true,
        stringvalue: "hello!",
        datevalue:   time.date(2022, 3, 2, 9, 10, 0, 0, time.utc),
        objectvalue: &myobject{
            arrayvalue: []int{1, 2, 3, 4},
        },
        nullstringvalue: nil,
        nullintvalue:    &otherint,
    }
    bytes, err := json.marshal(data)   // <-------------------this line
    println(string(bytes)) // <-------------------and this line
    println(err)
}

Ausgabe:

{"intValue":1234,"boolValue":true,"stringValue":"hello!","dateValue":"2022-03-02T09:10:00Z","objectValue":{"arrayValue":[1,2,3,4]},"nullStringValue":null,"nullIntValue":4321}

Das obige ist der detaillierte Inhalt vonWie kann ich den Tag-Schlüssel von JSON mit der Go-Struktur anzeigen?. 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