亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我如何將 BSON 文檔轉換為 map[string]interface{}

我如何將 BSON 文檔轉換為 map[string]interface{}

Go
慕田峪9158850 2023-06-01 14:28:16
我試圖將游標的數據解碼成一個map[string]interface{},我直接嘗試了但是它根本不起作用,所以我發現我必須將它轉換為BSON文檔然后再轉換它到 map[string]interface{},最后變成 JSON 字符串。我嘗試了以下代碼:... for cursor.Next(context.Background()) {     err = cursor.Decode(&itemBson)     ...     b, err := bson.Marshal(itemBson)     ...     err = bson.Unmarshal(b, &itemMap)     ... } ...但是bson文檔有如下值:地圖[_id:ObjectID("5c2d0809a49bad7d547ec028") applications:bson.Array[bson.Document{bson.Element{"enabled": true}}] userName:coto userUUID:df2d ea92-c189-53b3-aafe-485d0be23bee]并將地圖解析為 JSON:{"_id":"5c2d0809a49bad7d547ec028","applications":[{}],"userName":"coto","userUUID":"df2dea92-c189-53b3-aafe-485d0be23bee"}如您所見,鍵“applications”在 JSON 中為空,但它在 BSON 文檔中確實有內容。我不知道為什么數據會消失。我該如何解決這個錯誤?謝謝。
查看完整描述

2 回答

?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

解決了:


我使用以下代碼解決了這個錯誤:


var jsonDocuments []map[string]interface{}

var byteDocuments []byte


var bsonDocument bson.D

var jsonDocument map[string]interface{}

var temporaryBytes []byte


for cursor.Next(context.Background()) {

    err = cursor.Decode(&bsonDocument)


    ...


    temporaryBytes, err = bson.MarshalExtJSON(bsonDocument, true, true)


    ...


    err = json.Unmarshal(temporaryBytes, &jsonDocument)


    ...


    jsonDocuments = append(jsonDocuments, jsonDocument)

}


查看完整回答
反對 回復 2023-06-01
?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

temp := itemBson.data.(primitive.D) // convert interface to primitive D


metadata := temp.Map() // map to map[string]interface{}


if v, ok := metadata[prqKey]; ok { // check and use value

    commitID = v.(string)

}

您可以使用類型的內置接口primitive.D將其轉換為map[string]interface{}


查看完整回答
反對 回復 2023-06-01
  • 2 回答
  • 0 關注
  • 250 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號