接口测试 基于 GO 语言的接口测试基础讲解 01:string 类型转 map,以及内嵌 map 取值

无敌大王康康 · September 06, 2022 · 3139 hits

宣传一下自己的公众号,内容出处:
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"]))
}
No Reply at the moment.
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up