कुछ शोध के बाद मुझे 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)
}