2016-07-02 1 views
1

이 형식의 광범위한 검색 URL을 만들려고합니다. ?filter[1][field]=brandId&filter[1][operand]=>&filter[1][values][]=firstvalue이 문자열을 실제 배열로 변환하는 방법을 알아낼 수 없습니다. 지도/슬라이스 또는 내가 루프 할 수있는 모든 것).다차원 배열 형식의 쿼리 문자열을 실제 배열로 구문 분석합니다.

나는 많은 문서를 읽고 Google에서 검색했지만 좋은 방법을 찾을 수 없습니다. 당신의 filter 알 수없는 길이 될 것입니다 경우

+0

['net/url.Values'] (https://godoc.org/net/url#Values)를 찾고 있습니다. –

+0

흠, 잘 모르겠지만 시도는 틀린 것 같아요.하지만 틀릴 수도 있습니다. –

+0

@TimCooper 죄송합니다. 내 제안을 내 문자열을 배열로 변환하는 방법을 모르겠다. –

답변

0

당신이 좋아하는 구문 분석 쿼리 범위 수는 너무 :

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'를 만들 수있는 다차원 맵을 원한다. –

관련 문제