cas*_*iel 1 reflection encoding json go
在encoding/json下面,它使用relfect来编码结构。
但是我如何编码已经是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)
}
Run Code Online (Sandbox Code Playgroud)
它输出了这样的内容:
[123 34 102 108 97 103 34 58 52 48 54 125]
Run Code Online (Sandbox Code Playgroud)
这些是什么?什么是正确的方法来做到这一点,我的意思是从 Reflect.Value 类型获取正确的 json 字符串?
用于获取可以 JSON 编码的(reflect.Value).Interface()类型的值:interface{}
j, err := json.Marshal(s.Interface())
Run Code Online (Sandbox Code Playgroud)
至于你的问题:
[123 34 102 108 97 103 34 58 52 48 54 125]
Run Code Online (Sandbox Code Playgroud)
是 string {"flag":406},打印为字节切片(这就是json.Marshal返回的内容)。