1 回答

TA貢獻(xiàn)1797條經(jīng)驗 獲得超4個贊
是的,這是可能的。它是官方mongo-go驅(qū)動程序的一部分。生成此擴(kuò)展 JSON將作為bson.MarshalExtJSON()函數(shù)發(fā)布。
使用它的示例:
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中的一個常規(guī)字符串,但它代表一個UUID。您需要將其解析為 UUID 值(可能有很多庫)。
您還需要轉(zhuǎn)換(解析)DateTime輸入中的 JSON 文本,但它表示日期。用于time.Parse()此。現(xiàn)在您可以調(diào)用bson.MarshalExtJSON()生成擴(kuò)展的 JSON。
- 1 回答
- 0 關(guān)注
- 127 瀏覽
添加回答
舉報