【问题标题】:parse a query-string in multi-dimensional array format to actual array将多维数组格式的查询字符串解析为实际数组
【发布时间】:2016-11-04 23:43:16
【问题描述】:

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

我已经阅读了很多文档并在 google 上进行了搜索,但找不到这样做的好方法。

【问题讨论】:

标签: arrays go query-string


【解决方案1】:

如果您的 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,必须有比现在做的查询更好的方法。

【讨论】:

  • 我希望最终结果是一个多维地图,我可以循环并制作brandid == firstvalue
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-20
  • 1970-01-01
  • 2011-02-09
  • 1970-01-01
  • 2019-02-18
  • 1970-01-01
  • 2013-08-13
相关资源
最近更新 更多