宣传一下自己的公众号,内容出处:
https://mp.weixin.qq.com/s/W4b86dvCEsYCiMnhxzavRw
通过接口获取数据时,常常是 key,value 的形式,在 GO 里面,会声明一个 map 去接收数据,那么当数据是 string 类型的时候,我们要怎么对数据进行处理?下面是一段源代码讲解:
package main
import (
"encoding/json"
"fmt"
"reflect"
)
//字符串转Map
func StringToMap(content string) map[string]interface{} {
var resMap map[string]interface{}
err := json.Unmarshal([]byte(content), &resMap)
if err != nil {
fmt.Println("string转map失败", err)
}
return resMap
}
func main() {
// 示例字符串
resString := `{
"args": {},
"headers": {
"Accept-Encoding": "gzip",
"Host": "httpbin.org",
"User-Agent": "GRequests/0.10",
"X-Amzn-Trace-Id": "Root=1-5f3f3xxxxxxccdc4068"
},
"origin": "11.11.11.22",
"url": "http://httpbin.org/get"
}`
resMap := StringToMap(resString) //字符串转Map
innerMap := resMap["headers"].(map[string]interface{}) //Map嵌套取值,内部嵌套的map 也要转换
fmt.Println("Host取值",innerMap["Host"],reflect.TypeOf(innerMap["Host"]))
fmt.Println("url取值", resMap["url"], reflect.TypeOf(resMap["url"]))
fmt.Println("headers取值",resMap["headers"],reflect.TypeOf(resMap["headers"]))
}