golang json 获取所有key_Golang —— JSON 大法

本文介绍了Golang中处理JSON的方法,包括json.Marshal、json.Unmarshal、json.NewDecoder的使用,以及如何自定义转换结果。强调了json.Tag的用法,如omitempty和-的选择性导出,并探讨了json.RawMessage的延时转换特性。
摘要由CSDN通过智能技术生成

57f6d8d6398d3a8f119eb27cb4e7b8f8.png

「每一个程序员都无法逃脱 JSON 的命运魔爪」

JSON 简直就是一个神奇的玩意,只要是人类可以阅读的数据结构,基本都可以转成 JSON 的数据格式,其在各个平台、组件、模块中穿梭不止,使用上更是游刃有余。甚至在 HTTP 接口上,有取代 FormData 的趋势(上传文件还是得 Form),成为 POST 数据的新宠儿。在这里我们需要感谢 Javascript,感谢前端工程师。

数据类型 JSON Golang
字串 string string
整数 number int64
浮点数 number flaot64
数组 arrary slice
对象 object struct
布尔 bool bool
空值 null nil

JSON 数据类型对照表

下面我将为大家呈现 JSON 在 Golang 中的应用。

一、 入门

Golang 中提供了 json 的标准库,可以完成有关 JSON 的数据转换功能。

json.Marshal

Marshal 大法好,可以把一切 Struct 抹成 JSON , 把每个 Struct 收拾的服服帖帖,毫无退路可言。

在 Struct 中可以通过 json Tag 来给 JSON 转换的结果指定键值:

code:type People struct {
      Name string  `json:"nickname"`  Age  int64 `json:"age"`}func main(){
      j := People{
        Name : "Haha",    Age : 18,  }  jsonByte, _ := json.MarshalIndent(j, "" ,"  ")  fmt.Println(string(jsonByte))}output:{
      "nickname": "Haha",  "age": 18}

你可能注意到,我并没有使用 json.Marshal 方法,而是使用了 json.MarshalIntent 方法。

json.MarshalIntent 可以称之为 json.Marshal 的漂亮版,简称 「马漂亮」

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值