Go语言解析JSON文件,测试单元、实战

解析JSON配置文件到映射到结构体

  1. 编写json配置文件,我这里是链接数据库的配置文件。

    {
      "user": "root",
      "password": "root",
      "ip": "127.0.0.1",
      "port": "3306",
      "DB_name": "test"
    }
    
  2. 创建解析json文件函数 ReadDbConfFile.go

    package conf
    
    import (
    	"encoding/json"
    	"fmt"
    	"io/ioutil"
    	"os"
    	"path"
    	"runtime"
    )
    //注意 结构体的定义变量为大驼峰
    type DbConf struct {
    	User     string `json:"user"`
    	Password string `json:"password"`
    	Ip       string `json:"ip"`
    	Port     string `json:"port"`
    	DBName     string `json:"DB_name"`
    }
    
    /**
     连接数据库
     */
    func init() {
    
    	_, filename, _, ok := runtime.Caller(0)
    	if !ok {
    		panic("No caller information")
    	}
    	dir := path.Dir(filename)
    
    	fmt.Println(fmt.Printf("获取DB的配置的目录是: %s ", dir))
    	jsonFile := dir + "/db.json"
    	fmt.Println("dbConfFilePath is  %S", jsonFile)
    	dbConfFile, _ := os.Open(jsonFile)
    	defer dbConfFile.Close() // 函数执行结束之前关闭流
    
    	// 创建json解码器
    	byteValue, _ := ioutil.ReadAll(dbConfFile)
    	fmt.Println(string(byteValue))
    	var dbConfContent DbConf
    	err := json.Unmarshal([]byte(byteValue), &dbConfContent)
    	if err != nil {
    		fmt.Println("json 转化为struct 失败 ", nil)
    	}
    	fmt.Println(dbConfContent)
    	fmt.Println(dbConfContent.User)
    	fmt.Println(dbConfContent.Password)
    	fmt.Println(dbConfContent.Ip)
    	fmt.Println(dbConfContent.Port)
    	fmt.Println(dbConfContent.DBName)
    
    }
    
    
  3. 创建测试单元函数 ReadDbConfFile_test.go

    package test
    
    import (
    	"fmt"
    	"testing"
    	_ "yun/conf"
    )
    //_ "yun/conf" 是导入包, 在执行 Test_ReadJsonFile 函数之前会先加载_ "yun/conf" 包 ,在加载包之后
    // 会初始化执行 init 函数
    func Test_ReadJsonFile(test *testing.T)  {
    	fmt.Println("测试输出")
    }
    

结果:

获取DB的配置的目录是: D:/workspaces/go/src/yun/conf 61 <nil>
dbConfFilePath is  %S D:/workspaces/go/src/yun/conf/db.json
{
  "user": "root",
  "password": "root",
  "ip": "127.0.0.1",
  "port": "3306",
  "DB_name": "test"
}
{root root 127.0.0.1 3306 test}
root
root
127.0.0.1
3306
test
=== RUN   Test_ReadJsonFile
测试输出
--- PASS: Test_ReadJsonFile (0.00s)
PASS

Process finished with exit code 0

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值