Maison > développement back-end > Golang > Comment afficher la clé de balise de json à l'aide de go struct ?

Comment afficher la clé de balise de json à l'aide de go struct ?

PHPz
Libérer: 2024-02-13 10:12:06
avant
1298 Les gens l'ont consulté

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

Contenu des questions

J'apprends https://www.digitalocean.com/community/tutorials/how-to-use-json-in-go#using-a-struct-to-generate-json(go ancienne version).

J'utilise 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))

}
Copier après la connexion

OK

fmt.println(foo.marshal(data))
Copier après la connexion

Retour

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

Je veux vérifier {"intvalue": 1234, "boolvalue": true, ...}, merci de me guider.

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

Pourquoi mon utilisation de fmt.println(string(json.marshal(data))) provoque-t-elle une erreur ?

Solution

J'utilise habituellement la bibliothèque d'encodage json. Jetez un œil à l'exemple ci-dessous :

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)
}
Copier après la connexion

Sortie :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal