2016-09-30 73 views

回答

5

gopkg.in/mgo.v2/bson程序包有一个名为UnmarshalJSON的功能,它正是您想要的功能。

data参数应该包含您的JSON字符串作为[]byte的值。

func UnmarshalJSON(data []byte, value interface{}) error 

UnmarshalJSON解编为BSON的扩展JSON规范中定义的,其可以保持非标准语法JSON值。

例子:

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) 
} 
+0

第二个参数值呢,文档似乎没有详细说明它需要什么类型?从我对go的理解中,interface {}相当于在C中的void *或Object中的java?指向unmarshalJSON示例的指针会更好 – Ganesh

+0

void *和interface {}之间有很大的区别。当变量为void *时,无法找出变量的类型。而interface {}知道类型。 – lofcek

+0

谢谢,这个答案解决了我的问题。 – Kingname