为了账号安全,请及时绑定邮箱和手机立即绑定

对反射值进行解组

对反射值进行解组

Go
qq_花开花谢_0 2021-06-15 17:08:29
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
提交
取消
意见反馈 帮助中心 APP下载
官方微信