Golang提供了内置的`encoding/json`包,该包提供了对JSON的解析和生成功能。
在使用`encoding/json`包时,首先需要定义一个结构体类型来表示JSON中的数据结构。可以通过在结构体的字段上添加`json`标签来指定对应JSON中的字段名称。
例如,下面是一个表示用户信息的结构体:
```go
type User struct {
ID int `json:"id"`
Username string `json:"username"`
Email string `json:"email"`
}
```
使用`json.Marshal`函数可以将一个Go对象编码为JSON格式的字节流,而`json.Unmarshal`函数可以将JSON格式的字节流解码为Go对象。
当需要处理大型JSON数据时,可以使用`json.Decoder`进行流式解析,而不是一次性读取整个JSON字符串。这样可以将内存占用降低到最低,同时提高解析速度。
如下所示是一个使用`json.Decoder`解析JSON流的例子:
```go
dec := json.NewDecoder(jsonData)
for {
var user User
if err := dec.Decode(&user); err == io.EOF {
break
} else if err != nil {
log.Fatal(err)
}
// 处理解析后的用户信息
// ...
}
```