11

Let's suppose i have the following string

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

and i want to convert it into url.Values struct and i have the following

data := url.Values{}

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

for _, parameter := range parameters {

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

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

}

which does convert it into url.Values but the problem is that it doesn't convert url encoded values like + into space, so first is there a better way to parse this? then if not how do i convert url encoded string to normal string first?

Thank's For Your Help...o

3 Answers 3

18

You could use url.ParseQuery to convert the raw query to url.Values with unescaping

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)
}

Result:

map[honeypot:[] name:[Zelalem Mekonen] email:[[email protected]] message:[Hello And this is a test message...]]
Sign up to request clarification or add additional context in comments.

Comments

1

You could first decode the URL with net/url/QueryUnescape.
It does converts '+' into '' (space).

Then you can start splitting the decoded string, or use net/url/#ParseRequestURI and get the URL.Query.

Comments

-1

You can also use 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:[[email protected]] honeypot:[] name:[Zelalem Mekonen]]
   fmt.Println(query)
}

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.