0
点赞
收藏
分享

微信扫一扫

golang 通过反射进行json解析

玉字璧 2022-11-22 阅读 131


前言

在某些框架里,为了和实际模型解耦,可能需要用到反射

原写法

var ui UserInfo
json.Unmarshal(buf, &ui)
ui.SyncToDB()

反射写法

// o的类型为interface。在运行时,传递进来的是实例,而不是指针。
t := reflect.TypeOf(o)
if t.Kind() == reflect.Ptr { //指针类型获取真正type需要调用Elem
t = t.Elem()
}
instance := reflect.New(t)
ptr := instance.Interface()

if e := json.Unmarshal(rs, &ptr); e != nil {
fmt.Printf("unmarshal err for key %v buf %s \n", v, rs)
continue
}

m := instance.MethodByName("SyncToDB")
if !m.IsNil() {
m.Call(nil)
continue
}


举报

相关推荐

0 条评论