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

如何从 MongoDB 中获取数据并将其作为 Golang 中的 JSON 发送到 API

如何从 MongoDB 中获取数据并将其作为 Golang 中的 JSON 发送到 API

Go
蛊毒传说 2022-06-01 12:30:30
我正在编写一个 Golang API,当它被调用时,它会从两个不同的 MongoDB 集合中获取数据并将其附加到一个结构中,将其转换为 JSON,然后进行字符串化并发送到 API(Amazon SQS)问题是,定义从 MongoDB 接收的数据的结构,虽然一些字段定义正确,但有些是不同的// IncentiveRule struct defines the structure of Incentive rule from Mongotype IncentiveRule struct {    ... Other vars    Rule               Rule               `bson:"rule" json:"rule"`    ... Other vars}// Rule defines the struct for Rule Object inside an incentive ruletype Rule struct {    ...    Rules          interface{}    `bson:"rules" json:"rules"`    RuleFilter     RuleFilter     `bson:"rule_filter" bson:"rule_filter"`    ...}// RuleFilter ...type RuleFilter struct {    Condition string        `bson:"condition" json:"condition"`    Rules     []interface{} `bson:"rules" json:"rules"`}虽然这可行,但interface{}内部定义的Rule结构是不同的,并且在获得 BSON 并解码和重新编码为 JSON 时,而不是像JSON 中那样编码"fookey":"barvalue",它被编码为"Key":"fookey","Value":"barvalue",如何避免这种行为并将其作为"fookey":"barvalue"
查看完整描述

1 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

如果您使用interface{},则 mongo-go 驱动程序可以自由选择它认为适合表示结果的任何实现。通常它会选择bson.D表示文档,它是键值对的有序列表,其中一对是一个结构体,具有一个字段 forKey和一个字段 for Value,因此 Go 值可以保留字段顺序。

如果字段顺序不是必需/重要的,您可以显式使用bson.M代替interface{}[]bson.M代替[]interface{}bson.M是一个无序映射,但它以 的形式表示字段fieldName: fieldValue,这正是您想要的。


查看完整回答
反对 回复 2022-06-01
  • 1 回答
  • 0 关注
  • 224 浏览
慕课专栏
更多

添加回答

举报

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