图书网站建设实训心得,安徽建设住房建设厅网站,应届生招聘去哪个网站,拉新推广渠道问题
json包里使用的时候#xff0c;结构体里的变量不加tag能不能正常转成json里的字段#xff1f;
怎么答
如果变量首字母小写#xff0c;则为private。无论如何不能转#xff0c;因为取不到反射信息。如果变量首字母大写#xff0c;则为public。
不加tag#xff0c…
问题
json包里使用的时候结构体里的变量不加tag能不能正常转成json里的字段
怎么答
如果变量首字母小写则为private。无论如何不能转因为取不到反射信息。如果变量首字母大写则为public。
不加tag可以正常转为json里的字段json内字段名跟结构体内字段原名一致。加了tag从struct转json的时候json的字段名就是tag里的字段名原字段名已经没用。
举例
通过一个例子加深理解。
package main
import (encoding/jsonfmt
)
type J struct {a string //小写无tagb string json:B //小写tagC string //大写无tagD string json:DD //大写tag
}
func main() {j : J {a: 1,b: 2,C: 3,D: 4,}fmt.Printf(转为json前j结构体的内容 %v\n, j)jsonInfo, _ : json.Marshal(j)fmt.Printf(转为json后的内容 %v\n, string(jsonInfo))
}
输出 转为json前j结构体的内容 {a:1 b:2 C:3 D:4} 转为json后的内容 {“C”:“3”,“DD”:“4”} 解释
结构体里定义了四个字段分别对应 小写无tag小写tag大写无tag大写tag。 转为json后首字母小写的不管加不加tag都不能转为json里的内容而大写的加了tag可以取别名不加tag则json内的字段跟结构体字段原名一致。