go语言使用Decoder对json文件解析

在go语言的日常使用中,我们总需要解析一些json配置文件,今天介绍一种使用库函数中Decode方法对json文件进行解析的方法。

type Decoder

type Decoder struct {
// 内含隐藏或非导出字段
}

Decoder从输入流解码json对象

.json文件

//config.json
{
    
    
  "blue": "greenBlue",
  "one": 1,
  "right": true
}

一、首先创建字段跟json配置文件中相匹配的结构体

type Config struct {
    
    
  // 注意要有 json 标签,并且标签 json 冒号后面没有空格,且字段首字母大写
	Blue string `json:"blue"`
	One  int `json:"one"`
	Right bool `json:"right"`
}
//创建Config类型的变量
var cfg Config

二、使用os包中的Open方法读取.json文件

f, err := os.Open("config.json")
	if err != nil {
    
    
	    return err
	}
	//方法结束,Close关闭文件f,使文件不能用于读写。
		defer f.Close()

func Open(name string) (file *File, err error)

Open打开一个文件用于读取,如果操作成功,返回的对象方法用于读取数据。如果操作失败,则返回错误,错误底层类型是*PathError。

三、使用encoding包中的NewDecoder方法创建一个Decoder解码器

f, err := os.Open("config.json")
	if err != nil {
    
    
	    return err
	}
	//方法结束,Close关闭文件f,使文件不能用于读写。
		defer f.Close()
	 decoder := json.NewDecoder(f)

func NewDecoder(r io.Reader) *Decoder

NewDecoder方法创建一个从r中读取并解码json对象的*Deconder解码器,解码器有自己的缓冲,并可能超前读取部分json数据。

四、使用Decode方法读取并保存

	f, err := os.Open("config.json")
	if err != nil {
    
    
	    return err
	}
	//方法结束,Close关闭文件f,使文件不能用于读写。
		defer f.Close()
	 decoder := json.NewDecoder(f)
	 //读取decoder中解析的json值并保存在cfg实例的结构体中
	 err = decoder.Decode(&cfg)
	 if err != nil {
    
    
	 	return err
	}
	 fmt.Print(cfg)

func (dec *Decoder) Decode(v interface{}) error

Decode从输入流读取下一个json编码值并保存在v指向的值里

扫描二维码关注公众号,回复: 15997219 查看本文章

输出结果为:

{greenBlue 1 true}

猜你喜欢

转载自blog.csdn.net/m0_53328239/article/details/130443285