跳到主要内容

go-JSON序列化与反序列化

go-JSON序列化与反序列化

Marshal 在计算机领域中,表示为组织、整理

写接口、存配置、几乎都会碰到 JSON

使用Go 标准库 encoding/json

* 序列化(Marshal):把 Go 的值变成 JSON 字节(`[]byte`) * 将Go对象转换为JSON * 反序列化(Unmarshal):把 JSON 字节解析回 Go 的值 * 将JSON转行为GO对象 * 在 Gin 的web框架中使用 `c.JSON(200, user)` 返回数据时,框架会帮你完成 JSON 序列化,因此一般不需要手动调用 `json.Marshal()`。

序列化

把结构体、map、切片等变成 JSON:

  • 语法:json.Marshal(v)

格式化JSON(缩进、好看一点)用 MarshalIndent

反序列化

把 JSON 填进结构体。第二个参数必须是指针:

  • 语法:json.Unmarshal(data, &v)

必须传指针,传值无法修改外部变量

注意问题​

  • 在json里面,不支持单引号,key和value只能通过双引号
  • Go 标准库 encoding/json 只会序列化结构体中导出的字段(大写开头)
    • 如果结构体的字段是大写,那么JSON 序列化时不会包含这个字段