为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
森林海 2023-08-07 10:44:02
我正在努力从 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),但我没有设法将此有效字符串存储在变量中。我怎样才能做到这一点?
查看完整描述

1 回答

?
达令说

TA贡献1821条经验 获得超6个赞

来自包的Golang文档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两个值 - abyte array和error Iferror则可以通过转换为使用 来nil获取字符串byte arraystringstr := string(b)




查看完整回答
反对 回复 2023-08-07
  • 1 回答
  • 0 关注
  • 69 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信