如何从 bson 文档中渲染 json 字符串
How to render a json string from bson document
我正在努力从 Go 中的 BSON 文档为 API 创建一个有效的 JSON 字符串。
假设我有一个这样的对象:
type MyObject struct {
Name string
}
我将我的数据库 returns 称为包含许多文档的游标,如:[{"Name": "object_name"}, ...]
我可以通过
这样的循环检索所有文档
for cur.Next(ctx) {
var obj MyObject
err := cur.Decode(&obj)
//then display error if there's one
}
现在我想得到一个 JSON 字符串,其中包含我的数据库返回的所有文档,以便通过 HTTP 发送它。
因为,如果使用 I fmt.Println(obj)
,我最终会得到这样的结果:[{object1_name} {object2_name} ...]
根据我的说法,这不是我可以用于 API 的有效格式.
我知道 json.Marshal(obj)
实际上可以编码为有效的 JSON 并且我可以使用 os.Stdout.Write(obj)
对其进行解码,但我没有设法将这个有效的字符串存储在变量中。我怎样才能做到这一点?
来自 Golang documentation 用于 json
包
package main
import (
"encoding/json"
"fmt"
)
func main() {
type ColorGroup struct {
ID int `json:"id"`
Name string `json:"name"`
Colors []string `json:"colors"`
}
group := ColorGroup{
ID: 1,
Name: "Reds",
Colors: []string{"Crimson", "Red", "Ruby", "Maroon"},
}
b, err := json.Marshal(group)
if err != nil {
fmt.Println("error:", err)
} else {
str := string(b)
fmt.Println("stringified json is:", str)
}
}
Output
stringified json is: {"id":1,"name":"Reds","colors":["Crimson","Red","Ruby","Maroon"]}
json.Marshal
return两个值——一个byte array
和error
如果 error
是 nil
那么您可以通过将 byte array
转换为 string
来获取字符串
str := string(b)
我正在努力从 Go 中的 BSON 文档为 API 创建一个有效的 JSON 字符串。 假设我有一个这样的对象:
type MyObject struct {
Name string
}
我将我的数据库 returns 称为包含许多文档的游标,如:[{"Name": "object_name"}, ...]
我可以通过
这样的循环检索所有文档for cur.Next(ctx) {
var obj MyObject
err := cur.Decode(&obj)
//then display error if there's one
}
现在我想得到一个 JSON 字符串,其中包含我的数据库返回的所有文档,以便通过 HTTP 发送它。
因为,如果使用 I fmt.Println(obj)
,我最终会得到这样的结果:[{object1_name} {object2_name} ...]
根据我的说法,这不是我可以用于 API 的有效格式.
我知道 json.Marshal(obj)
实际上可以编码为有效的 JSON 并且我可以使用 os.Stdout.Write(obj)
对其进行解码,但我没有设法将这个有效的字符串存储在变量中。我怎样才能做到这一点?
来自 Golang documentation 用于 json
包
package main
import (
"encoding/json"
"fmt"
)
func main() {
type ColorGroup struct {
ID int `json:"id"`
Name string `json:"name"`
Colors []string `json:"colors"`
}
group := ColorGroup{
ID: 1,
Name: "Reds",
Colors: []string{"Crimson", "Red", "Ruby", "Maroon"},
}
b, err := json.Marshal(group)
if err != nil {
fmt.Println("error:", err)
} else {
str := string(b)
fmt.Println("stringified json is:", str)
}
}
Output
stringified json is: {"id":1,"name":"Reds","colors":["Crimson","Red","Ruby","Maroon"]}
json.Marshal
return两个值——一个byte array
和error
如果 error
是 nil
那么您可以通过将 byte array
转换为 string
来获取字符串
str := string(b)