beego config模块源码分析笔记四

2018-12-27  本文已影响33人  ljh123

json.go源码,这个文件在260行左右,beego的每个文件耦合性非常小,所以分析源码是比较轻松的。
这个文件和上一个ini.go非常类似,只不过一个针对ini配置文件,json配置文件,提供给开发者的操作基本一致,屏蔽了内部实现。

提供给开发者两个结构体
1)type JSONConfig struct
用于解析json文件和json数据,解析之后的内容存储在JSONConfigContainer变量中
2)type JSONConfigContainer struct
协程安全

一、type JSONConfig struct

type JSONConfig struct {
}
会将值中${ENV}转成实际的值
如1.ini
[test]
k=${GOPATH}
;如果$GOPATH = /opt/go,则解析之后的值为k=/opt/go

1)func (js *JSONConfig) Parse(filename string) (Configer, error)
2)func (js *JSONConfig) ParseData(data []byte) (Configer, error)

二、type JSONConfigContainer struct

type JSONConfigContainer struct {
    data map[string]interface{}
    sync.RWMutex
}

1)func (c *JSONConfigContainer) Bool(key string) (bool, error)
根据key获取值,并将其转成bool值
2)func (c *JSONConfigContainer) DefaultBool(key string, defaultval bool) bool
根据key获取值,并将其转成bool值,如果不存在值,则返回传入的默认值
3)func (c *JSONConfigContainer) Int(key string) (int, error)
根据key获取值,并将其转成int值
4)func (c *JSONConfigContainer) DefaultInt(key string, defaultval int) int
根据key获取值,并将其转成int值,如果不存在值,则返回传入的默认值
5)func (c *JSONConfigContainer) Int64(key string) (int64, error)
根据key获取值,并将其转成int64值
6)func (c *JSONConfigContainer) DefaultInt64(key string, defaultval int64) int64
根据key获取值,并将其转成int64值,如果不存在值,则返回传入的默认值
7)func (c *JSONConfigContainer) Float(key string) (float64, error)
根据key获取值,并将其转成float值
8)func (c *JSONConfigContainer) DefaultFloat(key string, defaultval float64) float64
根据key获取值,并将其转成float64值,如果不存在值,则返回传入的默认值
9)func (c *JSONConfigContainer) String(key string) string
根据key获取值,并将其转成string值
10)func (c *JSONConfigContainer) DefaultString(key string, defaultval string) string
根据key获取值,并将其转成string值,如果不存在值,则返回传入的默认值
11)func (c *JSONConfigContainer) Strings(key string) []string
根据key获取值,并将其转成[]string值
12)func (c *JSONConfigContainer) DefaultStrings(key string, defaultval []string) []string
根据key获取值,并将其转成[]string值,如果不存在值,则返回传入的默认值
13)func (c *JSONConfigContainer) GetSection(section string) (map[string]string, error)
获取值
14)func (c *JSONConfigContainer) SaveConfigFile(filename string) (err error)
将解析后的内容进行存储
15)func (c *JSONConfigContainer) Set(key, val string) error
将键值进行存储
16)func (c *JSONConfigContainer) DIY(key string) (v interface{}, err error)
以interface{]方式返回值
17)func (c *JSONConfigContainer) getData(key string) interface{} {
获取值

func init() {
    Register("json", &JSONConfig{})
}
上一篇下一篇

猜你喜欢

热点阅读