如何读取一个json格式文件,且反序化到一个结构体中

go---反序列化

import (
	"encoding/json"
	"io/ioutil"
)

//  程序配置,用标签跟文件中的json的key对应起来
type Config struct {
	Port         int `json:"port"`
	ReadTimeout  int `json:"readTimeout"`
	WriteTimeout int `json:"writeTimeout"`
}

var (
	// 单例模式
	G_config *Config
)

// 传入文件路径
func InitConfig(filename string) (err error) {
	var (
		content []byte
		conf    Config
	)
	// 1、去读文件
	if content, err = ioutil.ReadFile(filename); err != nil {
		return
	}

	// 2、JSON反序列化
	if err = json.Unmarshal(content, &conf); err != nil {
		return
	}

	// 3、解析成功就赋值单例
	G_config = &conf

	return
}

JSON文件

{
    "port": 8079,

    "readTimeout": 5000,

    "writeTimeout": 5000
}
// 调用
// 加载配置文件
	if err = master.InitConfig("./test.json"); err != nil {
		goto ERR
	}
posted @ 2022-03-25 00:10  taotaozh  阅读(57)  评论(0编辑  收藏  举报