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  }