我正在努力从Go for API的BSON文档创建有效的JSON字符串。假设我有一个这样的对象:
type MyObject struct {
Name string
}
我称呼我的数据库,它向我返回一个包含许多文档的游标,如:[{"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
Name string
Colors []string
}
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)
}
}
json.Marshal
返回两个值-byte array
和error
如果error
为nil
,则可以通过使用以下命令将byte array
转换为string
来获取字符串str := string(b)