Fork me on GitHub

golang学习----JSON文件操作

golang操作JSON文件

JSON做为一种重要的数据格式,在如今的web开发中越来越重要。 在golang中我们可以使用json包中的方法来操作json格式的文件。

生成JSON数据

	json := make(map[string]interface{})
	json["name"] = "foo"
	json["title"] = "bar"
	json["content"] = map[string]interface{}{
		"first": "one",
		"second": "two",
	}
	//	缩进json(格式化)
	//	若使用Marshal则不会格式化,这样不方便阅读
	bytes, err := json.MarshalIndent(json, "", " ")
	if err != nil{
		log.Println("ERROR:",err)
	}
	fmt.Println(string(bytes))

读取JSON数据

这里我们使用从文件中获取的JSON

//	读取文件中的数据
func readJson(filePath string) (result string){
	file, err := os.Open(filePath)
	defer file.Close()
	if err != nil {
		fmt.Println("ERROR:", err)
	}
	buf := bufio.NewReader(file)
	for {
		s, err := buf.ReadString('\n')
		result += s
		if err != nil {
			if err == io.EOF{
				fmt.Println("Read is ok")
				break
			}else{
				fmt.Println("ERROR:", err)
				return
			}
		}
	}
	return result
}


func main() {
	var data struct{
		Id int
		Customerld int
		Raised string
		Due string
		Paid bool
		Note string
		Items []struct{
			Id string
			Price float64
			Quantity int
			Note string
		}
	}
	result := readJson("F:\\GolangProject\\io\\file_option\\json\\json.json")
	err := json.Unmarshal([]byte(result), &data)
	if err != nil {
		fmt.Println("ERROR:",err)
	}
	fmt.Println(data)
}

PS:以上注意构造的对象的参数首字母必须大写,否则JSON数据是不会添加到结构体中去。

posted @   Banana_Fish  阅读(2180)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
历史上的今天:
2018-11-24 java拓展----数据流
点击右上角即可分享
微信分享提示