Пример ввода JSON:
Код: Выделить всё
{
"email": "john.calvert@nm.com",
"first_name": "John",
"accepts_marketing": false,
"email_marketing_consent": {
"state": "not_subscribed",
"opt_in_level": "single_opt_in",
"consent_updated_at": null
}
}
Код: Выделить всё
{
"optin_newsletter": false,
"email": "john.calvert@nm.com",
"first_name": "John"
}
Код: Выделить всё
[
{
"operation": "shift",
"spec": {
"accepts_marketing": "optin_newsletter",
"email_marketing_consent": {
"state": {
"subscribed": {
"#true": "optin_newsletter"
},
"*": {
"#false": "optin_newsletter"
}
}
},
"email": "email",
"first_name": "first_name"
}
},
{
"operation": "modify-overwrite-beta",
"spec": {
"subscribed": "=toBoolean"
}
}
]
- Когда в ввод, вывод для optin_newsletter становится массивом: [ false, "false" ], но я хочу, чтобы это было простое значение false.
- Когда только одно из полей (accepts_marketing или email_marketing_consent) присутствует во входных данных, я хочу, чтобы выходные данные отражали именно это значение без дублирования или ошибок.
1. Как мне справиться со случаем, когда присутствуют как Accepts_marketing, так и email_marketing_consent, и мне нужен только одно логическое значение для optin_newsletter (не массив значений)?
2. Если присутствует только Accepts_marketing или только email_marketing_consent, как я могу гарантировать, что преобразование выдает правильное значение для optin_newsletter ?
3. Как я могу изменить свою спецификацию JOLT, чтобы условно использовать одно из этих полей или установить приоритет одного над другим, если оба доступны?
Дополнительные сведения:
Цель состоит в том, чтобы поле optin_newsletter всегда имело логическое значение (истина или ложь), даже если оба поля (accepts_marketing и email_marketing_consent).
Я пытаюсь преобразовать значения email_marketing_consent.state, такие как «subscribed» и «not_subscribed», в логические значения. (истина и ложь соответственно) для единообразия.
Подробнее здесь: https://stackoverflow.com/questions/791 ... ccepts-mar
Мобильная версия