博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
golang json包变量不加tag
阅读量:3950 次
发布时间:2019-05-24

本文共 835 字,大约阅读时间需要 2 分钟。

json包里使用的时候,结构体里的变量不加tag能不能正常转成json里的字段?

(1)如果变量首字母小写,则为private。无论如何不能转,因为取不到反射信息。

(2)如果变量首字母大写,则为public。

(3)不加tag,可以正常转为json里的字段,json内字段名跟结构体内字段原名一致。

(4)加了tag,从struct转json的时候,json的字段名就是tag里的字段名,原字段名已经没用。

举例

package mainimport (    "encoding/json"    "fmt")type J struct {
a string //小写无tag b string `json:"B"` //小写+tag C string //大写无tag D 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内的字段跟结构体字段原名一致。

转载地址:http://mnkzi.baihongyu.com/

你可能感兴趣的文章
ConcurrentHashMap 1.7和1.8的区别
查看>>
阻塞锁与自旋锁
查看>>
【面试官:select语句和update语句分别是怎么执行的
查看>>
scala学习之安装问题
查看>>
LDAP常见错误码
查看>>
linux yum安装rpm包出现问题
查看>>
idea编译报错类似xxx.java:[85,65] 错误: 找不到符号
查看>>
ArrayList复制
查看>>
idea打开项目时,文件左下角显示橙色J
查看>>
SQL注入
查看>>
linux中ldconfig的使用介绍
查看>>
ldap学习参考博客
查看>>
linux学习之source命令与alias(别名)使用
查看>>
MYSQL常用查询
查看>>
安装Linux虚拟机绑定IP操作
查看>>
centos7离线安装 mysql
查看>>
mysql学习使用一(查询)
查看>>
Linux 学习之sed命令详解
查看>>
JAVA基础——常用IO使用
查看>>
spring框架pom.xml文件解析
查看>>