【发布时间】:2017-09-08 17:37:23
【问题描述】:
我想将 json 字符串转换为一些结构,用作 func 参数
我使用反射来获取参数类型,这很好,
但是如果我使用json.Unmarshal 我总是得到map[string]interface{}
这是一个迷你运行示例,文件名为json_test.go
package testJson
import (
"reflect"
"encoding/json"
"testing"
"log"
)
type LoginForm struct {
Name string
}
func Login(login LoginForm) {
}
func TestRun(t *testing.T) {
_func := Login
f := reflect.ValueOf(_func)
funcType := f.Type()
paramType := funcType.In(0)
log.Print(paramType.Name())
v := reflect.New(paramType).Elem().Interface()
jsonstr := `{"Name":"123"}`
log.Print(jsonstr)
log.Print(reflect.TypeOf(v).Name())
log.Print("%+v", v)
err := json.Unmarshal([]byte(jsonstr), &v)
if err != nil {
panic(err)
}
log.Print(reflect.TypeOf(v).Name())
log.Print( v)
var in []reflect.Value
in = make([]reflect.Value, funcType.NumIn())
in[0] = reflect.ValueOf(v)
f.Call(in)
}
感谢您的帮助!
【问题讨论】:
-
您必须显示所有相关代码。请展示一个可运行的最小示例。
-
添加可运行的例子,谢谢