2016-07-02 71 views
1

我想創建一個這種格式的廣泛的搜索網址?filter[1][field]=brandId&filter[1][operand]=>&filter[1][values][]=firstvalue,但我似乎無法找到一種方法來將此(字符串)轉換爲實際數組(地圖/切片或任何我可以循環)。解析多維數組格式的查詢字符串到實際數組

我已經閱讀了很多文檔,並在谷歌搜索,但找不到一個好辦法做到這一點。

+0

您正在尋找['net/url.Values'](https://godoc.org/net/url#Values)。 –

+0

嗯lemme嘗試,但我不認爲它這樣做,但我可能是錯誤的 –

+0

@TimCooper對不起,我沒有看到你的建議如何可以將我的字符串轉換爲數組。 –

回答

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,必須有比做查詢更好的方法你現在正在做。

+0

我想最終的結果是一個多維地圖,我可以循環並使'brandid == firstvalue' –