#json #jolt
Вопрос:
я не очень хорошо знаком с трансформацией толчка и ищу помощи.
Входной JSON выглядит следующим образом:
{
"2021-03-01": {
"hours": 0
},
"2021-03-02": {
"hours": 0
},
"2021-03-03": {
"hours": 6.31
},
"2021-03-04": {
"hours": 6.49
},
"2021-03-05": {
"hours": 0
}
}
Необходимые выходные данные заключаются в следующем:
[
{
"day": "2021-03-01",
"hours": 0
},
{
"day": "2021-03-02",
"hours": 0
},
{
"day": "2021-03-03",
"hours": 6.31
},
{
"day": "2021-03-04",
"hours": 6.49
},
{
"day": "2021-03-05",
"hours": 0
}
]
Любая помощь будет признательна.
Спасибо
Ответ №1:
[
{
"operation": "shift",
"spec": {
"*": {
"hours": "obj.hours",
"$": "obj.day"
}
}
},
{
"operation": "shift",
"spec": {
"*": {
"day": {
"*": "[amp;].day"
},
"hours": {
"*": "[amp;].hours"
}
}
}
}
]
Комментарии:
1. понял ваш подход, Барбарос, ваш подход-более оптимизированное и чистое решение, чем мое.
Ответ №2:
Другим подходом может быть
[
{
"operation": "shift",
"spec": {
"*": {
"$": "amp;.day",
"*": "amp;1.amp;"
}
}
},
{
"operation": "shift",
"spec": {
"*": {
"@": ""
}
}
}
]
где несуществующий ключ( day
) определяется на первом шаге, а затем соответствующие ключи объектов удаляются на втором. Например, нет необходимости повторять имена ключей, скорее вы можете использовать символические замены.
или даже прямой вариант с одним преобразованием сдвига может быть задан как
[
{
"operation": "shift",
"spec": {
"*": {
"$": "[#2].day",
"*": "[#2].amp;"
}
}
}
]