我得到了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”。新值不是类型接口,而是类型字符串。
答案 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"])
}