У меня есть 2 JSON-файла, один из которых содержит пользователей, а другой - шаблоны электронной почты
Я перебираю код в шаблонах электронной почты, и когда в качестве значения используется ключ, например:
"keyToFind": "Username"
Затем я хочу получить значение для Username в другом файле JSON:
"Username": "ssmith"
KeyToFind может быть несколькими разными вещами, такими как Password или Group, и я хочу избежать написанияКонкретный оператор if
Я пытаюсь сделать это в своем цикле, но похоже, что я не могу использовать переменную в скобочных обозначениях
for _, emailElements := range emailTemplates.EmailSpecification {
for _, fieldName := range structs.Names(&User{}) {
if emailElements.KeyToFind == fieldName {
EmailBody.WriteString(user[fieldName])
}
}
То, что пытается сделать выше, этоцикл по элементам в шаблоне электронной почты, а затем по полям в структуре Users;где получен emailElement в шаблонном JSON-файле типа KeyToFind, и он совпадает с именем поля в структуре;найдите пользовательское значение для KeyToFind
Я мог бы сделать это в Python без проблем
Как я могу переписать строку 4 для работы в Go?-> user [FieldName]
Я получаю ошибку:
user[fieldName] (type User does not support indexing)
Но если я снова напишу строку 4 в это:
user.Username
Это будет работать нормально, но это, очевидно, только для имен пользователей, это может быть пароль или группа для значения в KeyToFind
Вот файлы JSON:
Шаблон электронной почты:
"emailName": "customer",
"emailSpecification": [
{
"emailSubject": "Hi"
},
{
"text": "Username: "
},
{
"keyToFind": "Username"
}
]
Я хочу получить значение KeyToFind, выполнить поиск свойств в файле пользователя и вернуть значение из этого свойства
Файл пользователя:
[
{
"UserType": "customer",
"Username": "ssmith",
"Password": "sophie"
}
]