如果我的密钥都没有被命名为 "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"}
}
我正在尝试从数据库中读取数据,然后 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"}
}