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