कुछ शोध के बाद मुझे mejson मिला पुस्तकालय, हालांकि यह केवल मार्शलिंग के लिए है, इसलिए मैंने एक अनमर्शलर लिखने का फैसला किया।
देखें ejson
(मैंने इसे लिखा है), अभी यह एक बहुत ही सरल ejson है -> bson कनवर्टर, कोई bson नहीं है -> ejson फिर भी, आप mejson . का उपयोग कर सकते हैं उसके लिए।
एक उदाहरण :
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)
}