登录
首页 >  Golang >  Go问答

将 BSON 文档转换为 JSON 字符串的方法

来源:stackoverflow

时间:2024-02-24 13:33:26 478浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《将 BSON 文档转换为 JSON 字符串的方法》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

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

因为,如果使用我 fmt.println(obj) 我最终会得到这样的结果: [{object1_name} {object2_name} ...] 根据我的说法,这不是我可以使用的有效格式对于 api。

我知道 json.marshal(obj) 实际上可以编码为有效的 json,我可以使用 os.stdout.write(obj) 对其进行解码,但我没有设法将此有效字符串存储在变量中。我怎样才能做到这一点?


解决方案


来自 json 包的 golang documentation

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 返回两个值 - byte 数组 error 如果 errornil 那么您可以通过使用将 byte array 转换为 string 来获取字符串 str := 字符串(b)

本篇关于《将 BSON 文档转换为 JSON 字符串的方法》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>