如果我的密钥都没有被命名为 "Key",我如何从 BSON 获取 JSON?

How can I get JSON from BSON without my keys all being named "Key"?

我正在尝试从数据库中读取数据,然后 return 将结果作为 json 提供给用户。

我得到的输出如下:
[{"Key":"foo","Value":"bar"}]

我想什么时候得到:
"{"foo":"bar"}"

如何获得前者?

示例:(未显示从数据库读取并将 Raw 转换为字符串)

package main

import (
    "encoding/json"
    "fmt"

    "go.mongodb.org/mongo-driver/bson"
)

func main() {

    var data = "{\"foo\":\"bar\"}"
    var testInterface interface{}
    e := bson.UnmarshalExtJSON([]byte(data), false, &testInterface)
    if e != nil {
        fmt.Println("err is ", e)
    }
    out, _ := json.Marshal(testInterface)
    fmt.Println(string(out))
    // prints: [{"Key":"foo","Value":"bar"}]
}

您需要提供映射而不是接口来获取 key-value 对的值。

尝试:

package main

import (
    "encoding/json"
    "fmt"

    "go.mongodb.org/mongo-driver/bson"
)

func main() {

    var data = "{\"foo\":\"bar\"}"
    var testInterface map[string]string
    e := bson.UnmarshalExtJSON([]byte(data), false, &testInterface)
    if e != nil {
        fmt.Println("err is ", e)
    }

    out, _ := json.Marshal(testInterface)
    fmt.Println(string(out))
    // prints: {"foo":"bar"}
}