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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/*
 * 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 @   沉雪's  阅读(77)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示