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

Posted

技术标签:

【中文标题】将多维数组格式的查询字符串解析为实际数组【英文标题】: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 上进行了搜索,但找不到这样做的好方法。

【问题讨论】:

您正在寻找net/url.Values 嗯,让我试试,虽然我不这么认为,但我可能错了 @TimCooper 抱歉,我不明白您的建议如何将我的字符串转换为数组。 @TimCooper 你能举个例子吗play.golang.org/p/51b5XgUTsp play.golang.org/p/Or28JJOaUg 【参考方案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

以上是关于将多维数组格式的查询字符串解析为实际数组的主要内容,如果未能解决你的问题,请参考以下文章

数据库中数据写入多维数组,如何实现?

将多维数组解析为完全指定的端点

PHP如何将SQL查询结果转为多维数组,并按查询行输出

将多维 Json 数组解析为 Python

js如何操作多维json数组?

如何将sql结果动态转换为多维数组?