《Go 解析 JSON 的数据类型映射》
Go 标准库 encoding/json 在「JSON ↔ Go 类型」的映射关系如下:
| JSON 类型 | Go 类型 |
|---|---|
bool |
bool |
| 数字 | float64(默认) |
| 字符串 | string |
| 数组 | []interface{} |
| 对象 | map[string]interface{} |
null |
nil |
1. 使用结构体 + json Tag 解析
type Req struct {
IsInChina bool `json:"in_china"`
IsOrigin bool `json:"is_ori"`
ReqCount float64 `json:"req, number"`
}
type Stats struct {
Zone string `json:"zone"`
CaptchaCount float64 `json:"captcha_count, number"`
Reqs []map[string]interface{} `json:"reqs"`
Timestamp string `json:"timestamp"`
}
坑点:
json后面的 tag 必须使用双引号括起来,否则会出现莫名其妙的错误。
2. 生成 JSON
import "encoding/json"
data, err := json.Marshal(stats)
// 或缩进美化
data, err := json.MarshalIndent(stats, "", " ")
如果是 map/slice 等动态结构,直接用 map[string]interface{} 即可序列化。
阅读 —
·
全站 —