检测JSON文件是否包含字段

时间:2015-08-13 13:25:57

标签: go

我的应用从配置文件中读取设置:

file, _ := os.Open("config.json")
config := config.Config{}
err := json.NewDecoder(file).Decode(&config)
if err != nil {
    //handle err
}

我的JSON配置文件如下所示:

{
    "site" : {
        "url" : "https://example.com"
    },
    "email" : {
        "key" : "abcde"
    }
}

我的结构是:

type Site struct {
    Url  string
}

type Email struct {
    Key  string
}

type Config struct {
    Site   Site
    Email  Email
}

我希望从JSON文件中删除email字段,以表明不会使用任何电子邮件帐户:

{
    "site" : {
        "url" : "https://example.com"
    }
}

如何检测Go中的JSON文件中是否存在特定字段,这样就可以了解以下内容:

if (Email field found in JSON file) {
    output "You want to receive emails"
} else {
    output "No emails for you!"
}

1 个答案:

答案 0 :(得分:12)

Config更改为

type Config struct {
  Site   Site
  Email  *Email
}

使用c.Email != nil测试是否将电子邮件指定为JSON文件中的字符串值。如果c.Email == nil,则未指定电子邮件或null

playground example