gpt4 book ai didi

json - 进行 json 解码时为空字段

转载 作者:IT王子 更新时间:2023-10-29 01:23:08 26 4
gpt4 key购买 nike

这段代码是我写的。我无法弄清楚为什么在我运行它时它会给出空字段。我试过大写变量。还是不行。

package main

import (
"encoding/json"
"fmt"
)

type FirstName struct {
Name1 string
}
type SecondName struct {
Name2 string
}
type Person struct {
Details FirstName
MoreDetails SecondName
}

func main() {
var someGuy Person
var data = []byte(`{"details": {"firstName": "alan"}, "moreDetails": {"surName": "Turing"}}`)
json.Unmarshal(data, &someGuy)
fmt.Println(someGuy)
}

最佳答案

您的 JSON 到 Go 的映射不正确。要在解码过程中自动匹配结构字段和 JSON 属性,字段名称(而不是其类型的名称)必须匹配 JSON 中的属性(以不区分大小写的方式) :

type FirstName struct {
FirstName string
}
type SecondName struct {
SurName string
}
type Person struct {
Details FirstName
MoreDetails SecondName
}

有了这个,输出是(在 Go Playground 上试试):

{{alan} {Turing}}

如果你想在 Go 中保留这些名称,另一种选择是在 Go 结构字段和 JSON 属性名称之间提供一个映射。为此,您可以使用 struct tags :

type FirstName struct {
Name1 string `json:"firstName"`
}
type SecondName struct {
Name2 string `json:"surName"`
}

输出将是相同的。在 Go Playground 上试试这个.

有关结构标签的介绍和更多详细信息,请参阅 What are the use(s) for tags in Go?

关于json - 进行 json 解码时为空字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50366846/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com