1 回答
TA贡献1797条经验 获得超4个赞
是的,这是可能的。它是官方mongo-go驱动程序的一部分。生成此扩展 JSON将作为bson.MarshalExtJSON()函数发布。
使用它的示例:
m := map[string]interface{}{
"GuidBinary": []byte{1, 2, 3, 4, 5},
"DateTime": time.Now(),
"RegularString": "abcd",
}
out, err := bson.MarshalExtJSON(m, false, false)
fmt.Println(string(out), err)
这将输出(在Go Playground上尝试):
{"DateTime":{"$date":"2009-11-10T23:00:00Z"},"RegularString":"abcd",
"GuidBinary":{"$binary":{"base64":"AQIDBAU=","subType":"00"}}} <nil>
所以你需要做的是解组你的原始JSON(使用encoding/json包),你需要对它做一些后期处理:GuidBinary是输入JSON中的一个常规字符串,但它代表一个UUID。您需要将其解析为 UUID 值(可能有很多库)。
您还需要转换(解析)DateTime输入中的 JSON 文本,但它表示日期。用于time.Parse()此。现在您可以调用bson.MarshalExtJSON()生成扩展的 JSON。
- 1 回答
- 0 关注
- 111 浏览
添加回答
举报