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

我正在努力从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发送。

因为,如果我使用fmt.Println(obj),则会得到类似以下的内容:[{object1_name} {object2_name} ...],根据我的说法,这不是我可以用于API的有效格式。

我知道json.Marshal(obj)实际上可以编码为有效JSON,并且可以使用os.Stdout.Write(obj)对其进行解码,但是我没有设法将此有效字符串存储在变量中。我该如何做到这一点?

lulujiaojiao 回答:如何从bson文档渲染json字符串

从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","Maroon"]}

json.Marshal返回两个值-byte arrayerror 如果errornil,则可以通过使用以下命令将byte array转换为string来获取字符串 str := string(b)

本文链接:https://www.f2er.com/3109545.html

大家都在问