Go Lang语言JSON文件的读写操作

/*
 * Go语言内建对 JSON 的支持,使用内置的 encoding/json 标准库,可以轻松使用Go程序生成和解析 JSON 格式的数据。
*/
package main

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

//定义结构体,字段名大写表示允许被外包所使用的
type Json_config struct {
	Name    string
	Host    string
	Port    int
	User    string
	Pass    string
	Dbname  string
	Charset string
	Course  []string
}

func main() {
	write_json("db.json") // 写 JSON 文件
	read_json("db.json")  // 读 JSON 文件
}

/*
 * 写 JSON 文件
 */
func write_json(json_files string) {
	info := []Json_config{{
		"mysql",
		"localhost",
		3306,
		"root",
		"x123455x",
		"mysql",
		"utf8",
		[]string{
			" "}},
		{
			"redis",
			"127.0.0.1",
			8889,
			"root",
			"",
			"redis",
			"",
			[]string{
				"192.168.0.1",
				"192.168.0.100"}}}

	filePtr, err := os.Create(json_files) // 创建Json格式的文件
	if err != nil {
		fmt.Println("文件创建失败", err.Error())
		return
	}
	defer filePtr.Close()

	/* 创建Json编码器 */
	encoder := json.NewEncoder(filePtr)
	err = encoder.Encode(info)
	if err != nil {
		fmt.Println("编码错误", err.Error())
	} else {
		fmt.Println("编码成功")
	}
}

/*
 * 读 JSON 文件
 */
func read_json(json_files string) {
	filePtr, err := os.Open(json_files) //读取Json格式的文件
	if err != nil {
		fmt.Println("文件打开失败 [Err:%s]", err.Error())
		return
	}
	defer filePtr.Close()

	var info []Json_config
	/* 创建json解码器 */
	decoder := json.NewDecoder(filePtr)
	err = decoder.Decode(&info)
	if err != nil {
		fmt.Println("解码失败", err.Error())
	} else {
		fmt.Println("解码成功")
		fmt.Println(info)
	}
}

 

posted @ 2024-09-18 11:13  沉雪's  阅读(51)  评论(0编辑  收藏  举报