/*
* 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)
}
}