我想用 map["Name"] == "Value"将以下 JSON 序列化为 map[string]string
{
"Item": {
"tags": {
"Name": "Value"
}
}
}
但是,我不想为“项目”创建一个只有一个字段的支柱。是否可以忽略类似于 Java/Jackson 的 go 中的根 JSON 元素:mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
到目前为止我最好的是:
items := make(map[string]map[string]string)
items := items["Item"]
最佳答案
我会做一个小 helper ,它会跳过以下几行结构的根:
func SkipRoot(jsonBlob []byte) json.RawMessage {
var root map[string]json.RawMessage
if err := json.Unmarshal(jsonBlob, &root); err != nil {
panic(err)
}
for _, v := range root {
return v
}
return nil
}
然后像这样使用它:
json.Unmarshal(SkipRoot(jsonBlob), &items)
完整示例在这里:Playground
关于go - 如何忽略 go 中的根 JSON 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20872528/