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 @ 2026-02-25 12:58  知秋's  阅读(0)  评论(0)    收藏  举报