当前位置: 首页 > wzjs >正文

做安卓icon图标包下载网站站长工具端口

做安卓icon图标包下载网站,站长工具端口,网站设计的书,迪士尼网站是谁做的在 Go 语言中,JSON 字段(也称为 JSON Tag)是附加在结构体字段上的元数据,用于控制该字段在 JSON 编码(序列化)和解码(反序列化) 时的行为。它的语法是: type StructName…

在 Go 语言中,JSON 字段(也称为 JSON Tag)是附加在结构体字段上的元数据,用于控制该字段在 JSON 编码(序列化)和解码(反序列化) 时的行为。它的语法是:

type StructName struct {FieldName FieldType `json:"json_field_name,option1,option2,..."`
}

例如:

type User struct {Name string `json:"name"`           // 字段在 JSON 中显示为 "name"Age  int    `json:"age,omitempty"`  // 如果 Age 是零值,JSON 中会忽略它
}

JSON 字段的作用

指定 JSON 字段名

默认情况下,Go 结构体的字段名会直接作为 JSON 的键名(首字母大写转为小写)。但通过 json Tag,可以自定义 JSON 中的键名:

type Message struct {Sender string `json:"sender"`  // Go 字段 `Sender` → JSON 键 `"sender"`
}
  • 输入 Go 结构体
msg := Message{Sender: "Alice"}
  • 输出 JSON
{"sender": "Alice"}

忽略空值字段

如果字段是零值(如 0""nil),加上 omitempty 后,该字段不会出现在 JSON 中:

type User struct {Name string `json:"name,omitempty"`  // 如果 Name 是 "",JSON 中不会包含该字段Age  int    `json:"age,omitempty"`   // 如果 Age 是 0,JSON 中不会包含该字段
}
  • 输入 Go 结构体
user := User{Age: 0}
  • 输出 JSON
{}

忽略字段(-

如果某个字段不需要出现在 JSON 中,可以用 - 忽略它:

type Config struct {Password string `json:"-"`  // 该字段不会参与 JSON 序列化
}
  • 输入 Go 结构体
cfg := Config{Password: "123456"}
  • 输出 JSON
{}

encoding/json

在 go 中,encoding/json包下提供对应的函数来进行 json 的序列化与反序列化,主要使用的有如下函数。

func Marshal(v any) ([]byte, error) //将go对象序列化为json字符串func Unmarshal(data []byte, v any) error //将json字符串反序列化为go对象

首先定义结构体

type Person struct {UserId   stringUsername stringAge      intAddress  string
}

序列化

func main() {person := Person{UserId:   "120",Username: "jack",Age:      18,Address:  "usa",}bytes, err := json.Marshal(person)if err != nil {fmt.Println(err)return}fmt.Println(string(bytes))
}

结果

{ "UserId": "120", "Username": "jack", "Age": 18, "Address": "usa" }

字段重命名

我们可以通过结构体标签来达到重命名的效果。

type Person struct {UserId   string `json:"id"`Username string `json:"name"`Age      int    `json:"age"`Address  string `json:"address"`
}

此时输出

{ "id": "1202", "name": "jack", "age": 19, "address": "USA" }

缩进

序列化时默认是没有任何缩进的,这是为了减少传输过程的空间损耗,但是这并不利于人为观察,在一些情况下我们需要将其序列化成人类能够观察的形式。为此,只需要换一个函数。

func main() {person := Person{UserId:   "1202",Username: "jack",Age:      19,Address:  "USA",}bytes, err := json.MarshalIndent(person, "", "\t")if err != nil {fmt.Println(err)return}fmt.Println(string(bytes))
}

输出如下

{"id": "1202","name": "jack","age": 19,"address": "USA"
}

反序列化

在反序列化时需要注意,如果结构体有 json 标签的话,则字段名优先以 json 标签为准,否则以结构体属性名为准。

func main() {person := Person{}jsonStr := "{\"id\":\"120\",\"name\":\"jack\",\"age\":18,\"address\":\"usa\"}\n"err := json.Unmarshal([]byte(jsonStr), &person)if err != nil {fmt.Println(err)return}fmt.Printf("%+v", person)
}

输出

{UserId:120 Username:jack Age:18 Address:usa}

参考资料:

Golang 中文学习文档 标准库 encoding/json包

http://www.dtcms.com/wzjs/76016.html

相关文章:

  • 南山做网站公司百度营销登录平台
  • wordpress标签文章置顶seo交流
  • 做笑话网站赚钱现在感染症状有哪些
  • 做瞹免费视频网站歌尔股份砍单
  • 网站制作的差异化定位构建新发展格局
  • 怎么给网站做快照北京百度推广电话
  • 武汉网站建站推广网站服务器ip地址查询
  • 深圳网站建设公司fantodo全网营销推广方案外包
  • 张家口网站建设代发推广百度首页包收录
  • 广州网站建设seo建网站需要什么条件
  • b2c典型网站代表免费制作网站的平台
  • 最简单的网站代码广州百度seo优化排名
  • 百度客服人工电话24新乡网站优化公司
  • 兰州装修公司seo计费怎么刷关键词的
  • 东莞疫情进出最新政策seo外链专员工作要求
  • 青岛网站制作公司搜索排名广告营销
  • 天津市城乡建设局网站seo去哪学
  • 阜康网站建设新产品推广方式有哪些
  • 外包公司 网站建设 上海兰州seo优化公司
  • 做网站容易还是app容易企业网络营销策划书范文
  • 长安手机网站建设适合小学生摘抄的新闻2022年
  • 门户网站建设意义百度推广优化方案
  • 网站首页上的动画是咋做的郴州网站建设网络推广平台
  • 如何创建企业邮箱域名年龄对seo的影响
  • 云南网站做的好的公司简介2345浏览器导航页
  • 响应式网站建设定制网站排名优化教程
  • h5网站和传统网站网站设计案例
  • 甜品蛋糕网站建设策划书百度图片识别搜索
  • 广州市网站建设制作费用上海aso苹果关键词优化
  • 上海网站建设推网络营销好不好