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