douren5490 2014-01-01 19:48
浏览 21
已采纳

如何在执行时忽略根JSON元素?

I would like to serialize the following JSON into a map[string]string with map["Name"] == "Value"

{
    "Item": {
        "tags": {
            "Name": "Value"
        }
    }
}

However, I want to not have to create a strut with one field for "item". Is it possible to ignore the root JSON element in go similar to Java/Jackson: mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);

The best I have so far is:

items := make(map[string]map[string]string)
items := items["Item"]
  • 写回答

2条回答 默认 最新

  • dongyouzhui1969 2014-01-01 21:33
    关注

    I would make a small helper that will skip the root of the structure around the lines of:

    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
    }
    

    Then use it like that :

    json.Unmarshal(SkipRoot(jsonBlob), &items)
    

    Full example here : Playground

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置