如何获取一个二维map里面的某个二维字段的值?

代码如下:

jMap := make(map[string]interface{})
err := json.Unmarshal(util.GetByteMsgFromNetConn(conn), &jMap)

if err != nil {
    log.Println("解析 json 字符串发生错误:", err.Error())
    conn.Close()
}

var usernameTmp string

if user, exist := jMap["user"]; exist {
    if reflect.ValueOf(user).Kind() == reflect.Map {
        usernameTmp = user.(map[string]string)["username"]
    }
}

jMap["user"] 是一个 map 类型的变量,请问我该如何将这个 map 里面的 username 赋值给 usernameTmp 变量呢?

我现在这种写法会报错如下:

panic: interface conversion: interface {} is map[string]interface {}, not map[string]string

但是我如果写成:

usernameTmp = user.(map[string]interface{})["username"]

编辑器又提示错误......

阅读 2.1k
1 个回答

需要第二次断言:

usernameTmp = user.(map[string]interface{})["username"].(string)

不好意思,没人回答,我自己又解决了,只能自问自答了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题