golang使用类型map [string] interface {}为对象设置新值

时间:2018-04-27 19:59:27

标签: go interface

我得到了json str,我这样解析。

var bdoc interface{}
bson.UnmarshalJSON([]byte(gjson.Get(*str, "user").String()), &bdoc)

我的bdoc是map [string] interface {}类型。当我想从我的地图中获取密钥时,我会这样做:

bdoc.(map[string]interface{})["pk"]

但是如何为“pk”键设置新值?我想转换它 bdoc [“pk”] =“1234567”。新值不是类型接口,而是类型字符串。

1 个答案:

答案 0 :(得分:1)

您可以将字符串和值保留为字符串类型

package main

import (
    "fmt"
    "log"
)

func main() {

    var bdoc interface{}
    aMap, ok := bdoc.(map[string]interface{})
    if !ok {
       log.Fatalf("Failed to cast %T", bdoc)
    }
    //depending on JSON settting pk number may have json.Numbe or float64
    fmt.Prinf("%v  %T\n", aMap["pk"], aMap["pk"])
   aMap["pk"] ="1234"
    fmt.Prinf("%v  %T\n", aMap["pk"], aMap["pk"])

}