「每一个程序员都无法逃脱 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 的漂亮版,简称 「马漂亮」