有没有办法直接从mgo结果转换为JSON字节数组,而不必首先序列化为一个结构片?
答案 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。