package mainimport ( "fmt" "encoding/json" "reflect")var ( datajson []byte //ref mapp)type mapp map[string]reflect.Typetype User struct { Name string //Type map[string]reflect.Type}func MustJSONEncode(i interface{}) []byte { result, err := json.Marshal(i) if err != nil { panic(err) } return result}func MustJSONDecode(b []byte, i interface{}) { err := json.Unmarshal(b, i) if err != nil { panic(err) }}func Store(a interface{}) { datajson = MustJSONEncode(a) //fmt.Println(datajson)}func Get(a []byte, b interface{}) { objType := reflect.TypeOf(b).Elem()obj := reflect.New(objType)//fmt.Println(obj)MustJSONDecode(a, &obj)fmt.Printf("%s", obj) }func main() { dummy := &User{} david := User{Name: "DavidMahon"} Store(david) Get(datajson, dummy)}在获取函数中func Get(a []byte, b interface{}) { objType := reflect.TypeOf(b).Elem()obj := reflect.New(objType)//fmt.Println(obj)MustJSONDecode(a, &obj)fmt.Printf("%s", obj) }我无法将 json 解组为基础对象类型。这里有什么问题?我被困在这里了。一件很简单却又很难搞清楚的事情。谢谢更新::此问题的目标是检索在 Get 函数中传递的类型完整的对象。Nick 在下面的评论中提到的方法并没有让我得到我之前已经尝试过的实际对象。我无论如何都可以在这样的地图中检索数据(即使对象下面有递归对象)func Get(a []byte) { var f interface{} //buf := bytes.NewBuffer(a) //v := buf.String() //usr := &User{} MustJSONDecode(a, &f) fmt.Printf("\n %v \n", f)}但是我需要返回的不仅仅是数据的实际对象。就像user := &User{"SomeName"}我需要user从 Unmarshall 返回对象的地方。诀窍是在反射中的某个地方,但不知道如何。
2 回答
- 2 回答
- 0 关注
- 167 浏览
添加回答
举报
0/150
提交
取消