在bson文档中渲染一个json字符串

问题描述 投票:0回答:1

我正在努力从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)对其进行解码,但是我没有设法将此有效字符串存储在变量中。我该如何做到这一点?

json mongodb go marshalling bson
1个回答
0
投票

从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 arrayerror如果errornil,则可以通过使用以下命令将byte array转换为string来获取字符串str := string(b)

© www.soinside.com 2019 - 2024. All rights reserved.