Il gopkg.in/mgo.v2/bson
il pacchetto ha una funzione chiamata UnmarshalJSON
che fa esattamente quello che vuoi.
I data
il parametro dovrebbe contenere la tua stringa JSON come []byte
valore.
func UnmarshalJSON(data []byte, value interface{}) error
Esempio:
var bdoc interface{}
err = bson.UnmarshalJSON([]byte(`{"id": 1,"name": "A green door","price": 12.50,"tags": ["home", "green"]}`),&bdoc)
if err != nil {
panic(err)
}
err = c.Insert(&bdoc)
if err != nil {
panic(err)
}