簡體   English   中英

golang為類型為map [string] interface {}的對象設置新值

[英]golang set new value to object with type map[string]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”。 新值將不是interface類型,而是string類型。

您可以設置字符串和值保持為字符串類型

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"])

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM