-3

我正在尝试从数据库中读取,然后将结果作为 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"}]
}
4

1 回答 1

4

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

尝试:

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"}
}
于 2019-05-07T17:50:04.883 回答