How to use bufio to read JSON data from io.Reader in Go? Use bufio.NewReader to create a buffered io.Reader. Use bufio.ReadBytes to read JSON until a delimiter (usually a newline character) is encountered. Use the encoding/json package to parse JSON data.

How to use bufio in Golang to read JSON data from io.Reader
Reading JSON data is in Golang Common tasks. To read JSON from io.Reader you can use the bufio package. This is a simple tutorial demonstrating how to read JSON data from io.Reader using bufio.
Install bufio package
import "bufio"
Create io.Reader
To read JSON from io.Reader , you need to create a io.Reader first. You can use os.Stdin to use standard input or create a file to read from.
Use bufio.NewReader to create a buffered io.Readerbufio The package provides the NewReader function, which can create a buffered io.Reader. Buffered io.Reader. This can improve read performance on small files or network connections.
reader := bufio.NewReader(in)
Read JSON using bufio.ReadBytesbufio package provides a function named ReadBytes, which can be read from io.Reader reads until a delimiter is encountered. For JSON data, the delimiter is usually the newline character ('\n').
line, err := reader.ReadBytes('\n')
if err != nil {
// 处理错误
}Parsing JSON
After reading the JSON lines, you can use the encoding/json package to parse the JSON data.
var data map[string]interface{}
err = json.Unmarshal(line, &data)
if err != nil {
// 处理错误
}Practical case
The following is a complete example of how to use bufio to read JSON data from io.Reader.
import (
"bufio"
"encoding/json"
"fmt"
"os"
)
func main() {
// 使用标准输入创建 io.Reader
reader := bufio.NewReader(os.Stdin)
// 读取 JSON 数据直到遇到换行符
line, err := reader.ReadBytes('\n')
if err != nil {
fmt.Println("Error reading JSON:", err)
os.Exit(1)
}
// 解析 JSON 数据
var data map[string]interface{}
err = json.Unmarshal(line, &data)
if err != nil {
fmt.Println("Error parsing JSON:", err)
os.Exit(1)
}
// 打印数据
fmt.Println(data)
}The above is the detailed content of How to read JSON data from io.Reader using bufio in Golang?. For more information, please follow other related articles on the PHP Chinese website!