登录
首页 >  Golang >  Go问答

Beego config包解析嵌套 json 出现的问题

来源:SegmentFault

时间:2023-01-24 19:09:27 226浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《Beego config包解析嵌套 json 出现的问题》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

我的 json 配置文件是嵌套的,类似:

{
    // Blog global settings
    "global": {
        "title": "title",               // Blog title
        "subtitle": "subtitle"          // Blog subtitle
    },

    // Database settings. If you don't know what the value is, leave it empty.
    "database": {
        "host": "host",                 // The host name of mongoDB server, could be localhost.
        "port": "port",                 // Port
        "database": "database",         // Database name
        "username": "username",
        "password": "password"
    },

    // Admin users of the blog.
    "users": [
        {
            "username": "username",
            "email": "email",
            "password": "password"
        }
    ]
}

这样我取出

database
的子对象的时候采用:

temp, err := userconf.DIY("database")
if err != nil {
    panic(err)
}

 dbconf, ok := temp.(config.ConfigContainer)
 if !ok {
    panic("Configuration file error, can't read database settings.")
 }

运行的话就会进入

!ok
的 panic,我打印的结果,
temp
是一个 map,这样的话是不是就不能再用 config 包来读取
dbconf
的配置了?

正确答案

最新版本现在支持直接

jsonconf.String("database::host")
获取值

if db, err := jsonconf.DIY("database"); err != nil {
        t.Fatal(err)
    } else if m, ok := db.(map[string]interface{}); !ok {
        t.Fatal("db not map[string]interface{}")
    } else {
        if m["host"].(string) != "host" {
            t.Fatal("get host err")
        }
    }

理论要掌握,实操不能落!以上关于《Beego config包解析嵌套 json 出现的问题》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>