Я понимаю, что здесь есть несколько других вопросов о соединении JmesPath, но у меня проблемы с отдельной проблемой, для которой я не нашел никаких примеров, где мне нужно объединить (ie, присоединить) набор JSON значений с динамически именованными ключами в один элемент.
Если я начну со следующей структуры данных JSON:
{
"data": [
{
"secmeetingdays":
{
"dayset_01":
{
"day_01": "M",
"day_02": "W",
"day_03": "F"
},
"dayset_02":
{
"day_01": "T",
"day_02": "TH"
}
},
}]
}
, я хотел бы получить что-то вроде это:
[
{
"M,W,F"
},
{
"T,TH"
}
]
Я начал запрос, чтобы сгладить данные, но полностью придерживаюсь синтаксиса соединения. Ничего из того, что я пробую, похоже, не работает.
- Попытка 1 :
data[].secmeetingdays | [0].*.*
[
[
"M",
"W",
"F"
],
[
"T",
"TH"
]
]
Почти, но не совсем так.
Попытка 2 :
data[].secmeetingdays | [0].*.* | {join(',',@)}
не удалась
Попытка 3 :
data[].secmeetingdays | [0].*.*.join(',',@)
не удалась
Попытка 4 :
data[].secmeetingdays | {join(',',@[0].*.*)}
не удалась
Я попытался избежать 2-х сверток, чтобы иметь некоторую ссылку для захвата внутри соединения.
Попытка 4 data[].secmeetingdays | [0].* | join(',',@[])
.
не удается
Попытка 6 data[].secmeetingdays | [0].*.* | @.join(',',[])
Дает результат, но это не то, что я хочу:
"M,W,F,T,TH"
Обновление:
Попытка 7 data[].secmeetingdays[].*.* | [].join(',',@)
приближает меня, но это не совсем то, что мне нужно:
[
"M,W,F",
"T,TH"
]
Я мог бы работать с этим решением, но оставим его открытым на случай, если у кого-то есть точный ответ на вопрос.
В приведенном здесь примере https://jmespath.org/ есть соединение, но оно есть только в одном списке элементов. Как я могу присоединиться к подмассивам, не затрагивая структуру родителей?