如何在没有规范的扩展JSON添加的情况下获取DecodeBytes()输出

我使用DecodeBytes()函数通过Go的mongo驱动程序从mongoDB中获取数据(因为数据的结构可能会有所不同)。
我的问题是,其中一个值是int / double(而不是字符串)时。
 在这种情况下,它会添加一些规范的扩展JSON,例如,将3添加到"$numberDouble": "3.0"

如何删除那些规范的扩展JSON?

func (m *Mongoclient) Find(collection string,filter interface{}) string {
    findResult := m.Db.Collection(collection).FindOne(m.Ctx,filter)
    if findResult.Err() != nil {
        fmt.Println(findResult.Err().Error())
        return ""
    }
    db,err := findResult.DecodeBytes()
    if err != nil {
        fmt.Println(err.Error())
        return ""
    }
    return db.String()
}
wupei0327 回答:如何在没有规范的扩展JSON添加的情况下获取DecodeBytes()输出

解决方案是使用Decode函数来bson.M,而不是json.Marshal

    var document bson.M
    err := findResult.Decode(&document)
    if err != nil {
        fmt.Println(err.Error())
        return ""
    }
    resBytes,err := json.Marshal(document)
    if err != nil {
        fmt.Println(err)
        return ""
    }
    return string(resBytes)
本文链接:https://www.f2er.com/3166368.html

大家都在问