猿问

如何从 bson 文档渲染 json 字符串

我正在努力从 Go 中的 BSON 文档为 API 创建有效的 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),但我没有设法将此有效字符串存储在变量中。我怎样才能做到这一点?


森林海
浏览 97回答 1
1回答

达令说

来自包的Golang文档jsonpackage mainimport (    "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)    }}Outputstringified json is: {"id":1,"name":"Reds","colors":["Crimson","Red","Ruby","Maroon"]}返回json.Marshal两个值 - abyte array和error Iferror则可以通过转换为使用 来nil获取字符串byte arraystringstr := string(b)
随时随地看视频慕课网APP

相关分类

Go
我要回答