Setelah beberapa penelitian, saya menemukan mejson perpustakaan, namun itu hanya untuk Marshaling, jadi saya memutuskan untuk menulis Unmarshaller.
Lihat ejson
(Saya menulisnya), sekarang ini adalah ejson
yang sangat sederhana -> bson
konverter, tidak ada bson
-> ejson
namun, Anda dapat menggunakan mejson
untuk itu.
Sebuah Contoh :
const j = `{"_id":{"$oid":"53c2ab5e4291b17b666d742a"},"last_seen_at":{"$date":1405266782008},"display_name":{"$undefined":true},
"ref":{"$ref":"col2", "$id":"53c2ab5e4291b17b666d742b"}}`
type TestS struct {
Id bson.ObjectId `bson:"_id"`
LastSeenAt *time.Time `bson:"last_seen_at"`
DisplayName *string `bson:"display_name,omitempty"`
Ref mgo.DBRef `bson:"ref"`
}
func main() {
var ts TestS
if err := ejson.Unmarshal([]byte(j), &ts); err != nil {
panic(err)
}
fmt.Printf("%+v\n", ts)
//or to convert the ejson to bson.M
var m map[string]interface{}
if err := json.Unmarshal([]byte(j), &m); err != nil {
t.Fatal(err)
}
err := ejson.Normalize(m)
if err != nil {
panic(err)
}
fmt.Printf("%+v\n", m)
}