我有一个符合RFC 3986的URL编码字符串。我想将此字符串解码为JSON。
是否有API调用才能完成此操作?我在https://golang.org/pkg/net/url/#URL.String
中找不到任何内容我得到一个字符串作为aws服务的API调用之一的响应。它在docs.aws.amazon.com/IAM/latest/APIReference/...中进行了描述。如此处所述,我将获得符合RFC 3986的URL编码的aws策略。我想将其转换为普通的JSON格式。
答案 0 :(得分:2)
您可以使用url.QueryUnEscape
解码字符串,然后使用json.Marshal
转换为json
package main
import (
"net/url"
"log"
"fmt"
"encoding/json"
)
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
s := "%7B%22name%22%3A%22user1%22%2C%22age%22%3A30%7D" // URL encoded value
in, err := url.QueryUnescape(s)
if err != nil {
log.Fatal(err.Error())
}
fmt.Printf("query escaped %s \n", in)
var u User
// unmarshalling
json.Unmarshal([]byte(in),&u)
fmt.Printf("username : %s, age %d \n", u.Name, u.Age)
//marshalling
bytes , err := json.Marshal(in)
if err != nil {
log.Fatal(err.Error())
}
fmt.Println(string(bytes))
}