如何在golang中将字符串解析为url.Values?

时间:2018-03-31 04:39:39

标签: parsing go url-encoding

假设我有以下字符串

honeypot=&name=Zelalem+Mekonen&email=zola%40programmer.net&message=Hello+And+this+is+a+test+message...

我希望将其转换为url.Values结构,我有以下

data := url.Values{}

parameters := strings.Split(request.Body, "&")

for _, parameter := range parameters {

    parts := strings.Split(parameter, "=")

    data.Add(parts[0], parts[1])

}

确实将其转换为url.Values,但问题是它不会将像+这样的网址编码值转换为空格,所以首先是否有更好的解析方法?< / strong>然后如果不是如何将url编码的字符串首先转换为普通字符串?

感谢您的帮助...... o

3 个答案:

答案 0 :(得分:4)

您可以使用<div class="centerText">Hello World</div>通过unescaping将原始查询转换为url.ParseQuery

url.Values

结果:

package main

import (
    "fmt"
    "net/url"
)

func main() {
    t := "honeypot=&name=Zelalem+Mekonen&email=zola%40programmer.net&message=Hello+And+this+is+a+test+message..."
    v, err := url.ParseQuery(t)
    if err != nil {
        panic(err)
    }

    fmt.Println(v)
}

答案 1 :(得分:1)

您可以先使用net/url/QueryUnescape解码网址 它会将“composer require maatwebsite/excel ”转换为“+”(空格)。

然后您可以开始拆分已解码的字符串,或使用net/url/#ParseRequestURI并获取URL.Query

答案 2 :(得分:-1)

您也可以使用URL.Query

package main

import (
   "fmt"
   "net/url"
)

func main() {
   get := url.URL{
      RawQuery: "honeypot=&name=Zelalem+Mekonen&email=zola%40programmer.net",
   }
   query := get.Query()
   // map[email:[zola@programmer.net] honeypot:[] name:[Zelalem Mekonen]]
   fmt.Println(query)
}

https://golang.org/pkg/net/url#URL.Query