从mgo结果直接流到json,而不会在go中反序列化为struct

时间:2016-10-10 18:03:43

标签: json mongodb go

有没有办法直接从mgo结果转换为JSON字节数组,而不必首先序列化为一个结构片?

2 个答案:

答案 0 :(得分:1)

将结果解码为interface{}。将interface{}编码为JSON。

var v interface{}
if err := c.Find(query).One(&v); err != nil {
   // handle error
}
p, err := json.Marshal(v)
if err != nil {
   // handle error
}

// p is []byte containing the JSON

答案 1 :(得分:1)

方法One()根据文档:执行查询并将第一个获得的文档解组为结果参数,所以它无论如何都在做Marshal,但我们可以"特技"它使用类型json.RawMessage,它只是一个字节片段,它在std库中。

var result json.RawMessage

if err := c.Find(query).One(&result); err != nil { ... }

有一个关于RawMessage的完整示例here