将多维数组格式的查询字符串解析为实际数组

时间:2016-07-02 20:59:58

标签: arrays go query-string

我正在尝试使用此格式创建一个广泛的搜索网址?filter[1][field]=brandId&filter[1][operand]=>&filter[1][values][]=firstvalue,但我似乎无法找到将此(字符串)转换为实际数组的方法(地图/切片或我可以循环的任何内容)

我已经阅读了大量文档并在谷歌上搜索过但无法找到一个好方法。

1 个答案:

答案 0 :(得分:0)

如果你的filter将是一个未知的长度,你可以对解析的查询进行调整:

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

    v, err := url.ParseQuery("filter[1][field]=brandid&filter[1][operand]=>&filter[1][values][]=firstvalue&filter[2][field]=brandid&filter[2][operand]=>&filter[2][values][]=firstvalue")
    if err != nil {
        fmt.Println(err)
        return
    }
    for id, thing := range v {
        switch {
        case strings.Contains(id, "field"):
            log.Printf("Field Value: %v", thing)
        case strings.Contains(id, "values"):
            log.Printf("Values Value: %v", thing)
        case strings.Contains(id, "operand"):
            log.Printf("Operand Value: %v", thing)
        }
    }

但是IMO必须有一个比你现在正在做的查询更好的方法。