在encoding / json下面,它使用relfect来编码struct。
但是我如何编码已经是一种reflect.Value
的东西查看以下代码:
type Person struct {
Name string `json:"name"`
Pwd string `json:"pwd"`
}
func main() {
factory := map[string]reflect.Type{
"Person":reflect.TypeOf(Person{}),
}
s := reflect.New(factory["Person"]).Elem()
s.Field(0).SetString("Max")
s.Field(1).SetString("Password")
j, err := json.Marshal(s)
if err != nil {
fmt.Println("error")
}
fmt.Println(j)
}
它出了这样的东西:
[123 34 102 108 97 103 34 58 52 48 54 125]
这些是什么? 这样做的正确方法是什么,我的意思是从reflect.Value类型获得正确的json字符串?
答案 0 :(得分:2)
使用(reflect.Value).Interface()
获取可以进行JSON编码的interface{}
类型的值:
j, err := json.Marshal(s.Interface())
关于你的问题:
[123 34 102 108 97 103 34 58 52 48 54 125]
是字符串{"flag":406}
,打印为一个字节切片(这是json.Marshal
返回的内容)。