Go json.NewDecoder 从文件中读取JSON 文件

6 min read

以下是一个使用json.NewDecoder从文件中读取JSON文件的示例代码:

package main

import (
	"encoding/json"
	"fmt"
	"os"
)

type Item struct {
	ID    int    `json:"id"`
	Name  string `json:"name"`
	Price int    `json:"price"`
}

func main() {
	// 打开JSON文件
	file, err := os.Open("data.json")
	if err != nil {
		fmt.Println("无法打开文件:", err)
		return
	}
	defer file.Close()

	// 使用json.NewDecoder创建解码器
	decoder := json.NewDecoder(file)

	// 读取JSON文件内容并解码到结构体
	var items []Item
	err = decoder.Decode(&items)
	if err != nil {
		fmt.Println("解码JSON文件失败:", err)
		return
	}

	// 打印解码后的结构体
	for _, item := range items {
		fmt.Printf("ID: %d, Name: %s, Price: %d\n", item.ID, item.Name, item.Price)
	}
}

在这个例子中,我们假设存在一个名为"data.json"的JSON文件,它包含了一组Item对象。我们首先使用os.Open打开文件,并在不再需要时使用defer语句关闭文件。然后,我们使用json.NewDecoder创建一个解码器。接下来,我们调用解码器的Decode方法,将JSON内容解码到一个切片类型的items变量中。最后,我们遍历items切片,并打印每个Item对象的属性。

请注意,以上代码假设JSON文件的格式与Item结构体匹配,并且字段的名称和类型也要匹配。如果JSON文件与Item结构体不匹配,或者文件中包含了其他不可识别的字段,解码过程可能会出错。你可以根据实际需求调整代码以适应不同的JSON结构。