How to view json's tag key using go struct?

PHPz
Release: 2024-02-13 10:12:06
forward
1203 people have browsed it

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

Question content

I am learning https://www.digitalocean.com/community/tutorials/how-to-use-json-in-go#using -a-struct-to-generate-json (old version of go).

I use 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))

}
Copy after login

OK

fmt.println(foo.marshal(data))
Copy after login

return

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

I want to check {"intvalue": 1234, "boolvalue": true, ...} , please guide me.

Full source code https://github.com/donhuvy/vy_learn_go_json2023/blob/main/sample3/main3.go#l36

Why does my use of fmt.println(string(json.marshal(data))) cause an error?

Solution

I usually use the json encoding library. Take a look at the following example:

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)
}
Copy after login

Output:

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

The above is the detailed content of How to view json's tag key using go struct?. For more information, please follow other related articles on the PHP Chinese website!

source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!