github.com/sereiner/library@v0.0.0-20200518095232-1fa3e640cc5f/utility/map.go (about) 1 package utility 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "net/url" 7 "strings" 8 ) 9 10 //GetMapWithQuery 将URL参数转换为map 11 func GetMapWithQuery(query string) (r map[string]string, err error) { 12 values, err := url.ParseQuery(query) 13 if err != nil { 14 return 15 } 16 r = make(map[string]string) 17 for k, v := range values { 18 count := len(v) 19 if count >= 0 { 20 r[k] = v[count-1] 21 } 22 } 23 return 24 } 25 func GetQueryWithMap(data map[string]string) (res string, err error) { 26 buf := bytes.Buffer{} 27 for k, v := range data { 28 buf.WriteString(k) 29 buf.WriteString("=") 30 buf.WriteString(url.QueryEscape(v)) 31 buf.WriteString("&") 32 } 33 res = buf.String() 34 res = strings.TrimRight(res, "&") 35 return 36 } 37 38 //GetJSONWithQuery 将URL参数转换为JSON 39 func GetJSONWithQuery(query string) (res string, err error) { 40 result, err := GetMapWithQuery(query) 41 buffer, err := json.Marshal(&result) 42 if err != nil { 43 return 44 } 45 return string(buffer), nil 46 }