2016-11-12 44 views
0

将标准库URL.Query()直接映射到结构将会非常棒。将URL.Query(切片图)转换为结构golang

查询()返回一个地图等: 地图[A:[AAAA] B:[BBBB] C:[CCCC]]

的结构是这样的:

类型的事情结构{ 甲串 乙串 C字符串 }

*我不知道为什么URL.Query返回里面强硬的数组元素的地图。 (well ..我知道why但GET不可能有重复的参数)

+2

GET不太可能会有重复的参数。在这种情况下,它被转换为一段值。你看过gorilla.schema包吗?我相信它可以完成这项工作。 –

+0

在我的情况下,我会很好,并希望在重复的情况下解雇一个例外。我看了一眼gorilla.schema,太棒了!谢谢。 – Custodio

回答

0

正如@ mh-cbon gorilla schema指出的是这里的最终解决方案。

取而代之的是从URL属性中获取queryParams。

func handleRequest(w http.ResponseWriter, r *http.Request) { 
    queryString := r.URL.Query() 
    //...parsing the Values -> map[string][]string 
} 

大猩猩模式的方法是将r.PostForm运送到解码功能。

func handleRequest(w http.ResponseWriter, r *http.Request) { 
    err := decoder.Decode(person, r.PostForm) 
    //...using reflect each struct's property can be called using 
    // the PostForm(url string, data url.Values) signature 

    fmt.Print(person.GoodJobGorilla) 
}