gpt4 book ai didi

json - 反序列化为 map[string]interface{} 作为具体的 map 类型

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

type Foo struct {
M map[string]interface{} `json:"m"`
}

type Bar struct {
I int `json:"i"`
}

type Bar2 struct {
S string `json:"s"`
}


func do() {
concreteFoo1 := Foo {
M: make(map[string]Bar),
}
json.Unmarshal([]byte(`{"m": {"a": { "i": 1 }}}`), &concreteFoo1)

concreteFoo2 := Foo {
M: make(map[string]Bar2),
}

json.Unmarshal([]byte(`{"m": {"a": { "s": "hello" }}}`), &concreteFoo2)

}

编译失败:

cannot use make(map[string]Bar) (type map[string]Bar) as typemap[string]interface {} in field value

cannot use make(map[string]Bar2) (type map[string]Bar2) as typemap[string]interface {} in field value

我怎样才能让它编译并支持 Foo 的两种变体?

最佳答案

Foo.m 更改为 map[string]Bar 而不是您拥有的,这将允许它编译。要使其工作,您需要将 Foo.m 更改为 Foo.M 并将 Bar.i 更改为 Bar.I。 Go JSON 库不会对未导出的属性进行解码或编码。将大写属性映射到小写 JSON 元素需要使用标签。完整的工作示例 here .

关于json - 反序列化为 map[string]interface{} 作为具体的 map 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47405010/

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