golang读取json文件
在Golang中读取JSON文件有多种实现方法,下面是几种常用的方法:
- 使用
ioutil.ReadFile()
函数读取整个JSON文件的内容,然后使用json.Unmarshal()
函数将JSON数据解码为相应的结构体。这种方法适用于JSON文件大小较小且可以完全加载到内存的情况。示例代码如下:
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
)
type Data struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
filePath := "data.json"
fileData, err := ioutil.ReadFile(filePath)
if err != nil {
log.Fatal(err)
}
var data Data
err = json.Unmarshal(fileData, &data)
if err != nil {
log.Fatal(err)
}
fmt.Println(data.Name, data.Age)
}
- 使用
os.Open()
函数打开JSON文件,然后利用json.NewDecoder()
创建一个新的解码器,最后使用Decode()
方法将JSON数据解码为结构体。这种方法适用于较大的JSON文件,因为它可以一次只加载部分数据到内存。示例代码如下:
package main
import (
"encoding/json"
"fmt"
"log"
"os"
)
type Data struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
filePath := "data.json"
file, err := os.Open(filePath)
if err != nil {
log.Fatal(err)
}
defer file.Close()
decoder := json.NewDecoder(file)
var data Data
err = decoder.Decode(&data)
if err != nil {
log.Fatal(err)
}
fmt.Println(data.Name, data.Age)
}
- 使用
json.Decoder
结合os.Open()
函数以及Token()
方法逐行读取JSON文件,可以有效地处理非常大的JSON文件,因为它只加载一行到内存中。示例代码如下:
package main
import (
"encoding/json"
"fmt"
"log"
"os"
)
type Data struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
filePath := "data.json"
file, err := os.Open(filePath)
if err != nil {
log.Fatal(err)
}
defer file.Close()
decoder := json.NewDecoder(file)
for decoder.More() {
var data Data
err := decoder.Decode(&data)
if err != nil {
log.Fatal(err)
}
fmt.Println(data.Name, data.Age)
}
}
评论已关闭