【问题标题】:How to get JSON value based on other JSON values如何根据其他 JSON 值获取 JSON 值
【发布时间】:2021-03-25 16:53:25
【问题描述】:

我在 Go 中有一个来自 XML resp body 的结构:

{ 
    "pdp":{
        "sellableUnits":[
            {
                "attributes":[
                    {
                        "id":"22555278",
                        "type":"size",
                        "value":"03.5"
                    }
            ]
        }
    ]
}
}


type sizeJ struct {
    PDP struct {
        SellableUnits []struct {
            Attributes []struct {
                ID    string `json:"id"`
                Type  string `json:"type"`
                Val string `json:"value"`
            } `json:"attributes"`
        } `json:"units"`
    } `json:"pdp"`
}

根据 Val 的值有不同的 Vals 和不同的 ID。

【问题讨论】:

    标签: json xml go


    【解决方案1】:

    使用for 循环,如果您愿意,可以使用range

    func getValByID(j sizeJ, id string) string {
        for _, u := range j.PDP.SellableUnits {
            for _, a := range u.Attributes {
                if a.ID == id {
                    return a.Val
                }
            }
        }
        return ""
    }
    
    func getIDByVal(j sizeJ, val string) string {
        for _, u := range j.PDP.SellableUnits {
            for _, a := range u.Attributes {
                if a.Val == val {
                    return a.ID
                }
            }
        }
        return ""
    }
    

    https://play.golang.org/p/LjPrs1yGKGc

    【讨论】:

    • 为什么我在运行时会得到一个空白输出?
    • @SalvatoreTimpani 因为您提供的输入为空或不正确。您可以在链接中看到这种方法有效。
    • 没有错,我的输入匹配 标签之间的内容
    • @SalvatoreTimpani 看,没有人可以调试他们看不到的东西。问题中没有<id> 标签。链接中的解决方案适用于虚拟 json,因为您没有提供。如果您的数据不同,为什么不将其包含在问题中?
    • 刚刚添加到上面
    【解决方案2】:

    可以用map代替嵌套结构,比如

    var myMap map[string]map[string]interface{}
    

    var myMap map[string]interface{}
    

    或任何你想要的东西。

    【讨论】:

    • 好的,但是当我在 resp 主体上使用这个结构时,我将如何根据 Val 记录 ID?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多