我有一个配置文件,如下所示:
{
"auth": {
"client_id": "foo",
"client_secret": "bar",
"account": "foo@bar.com",
"secrets_type": "auto"
},
"jobs": [
{
"source_folder": "folder1",
"create_albums": "off",
"delete_after_upload": false,
"include": [
"*.jpg"
],
"exclude": []
},
{
"source_folder": "folder2",
"create_albums": "folderName",
"delete_after_upload": true,
"include": [
"*.jpg", "*.webp"
],
"exclude": [
"abc*"
]
}
]
}
我正在用golang 的viper套餐阅读它.
我在获取jobs
个设置时遇到了问题:
type FolderUpload struct {
sourceFolder string `mapstructure:"source_folder"`
createAlbums string `mapstructure:"create_albums"`
deleteAfterUpload bool `mapstructure:"delete_after_upload"`
include []string `mapstructure:"include"`
exclude []string `mapstructure:"exclude"`
}
// Read the "jobsSettings" section as a slice of maps
jobsSettings := viper.Get("jobs").([]interface{})
// Iterate over each job item
for _, job := range jobsSettings {
jobMap := job.(map[string]interface{})
j := FolderUploadJob{
sourceFolder: jobMap["source_folder"].(string),
createAlbums: jobMap["create_albums"].(string),
deleteAfterUpload: jobMap["delete_after_upload"].(bool),
include: jobMap["include"].([]string),
exclude: jobMap["exclude"].([]string),
}
}
我也试过viper.UnmarshalKey()
,但当我试图读取include
和exclude
时,我总是收到panic .
谁能给我指一条正确的路?