JmesPath объединяет элементы вложенного массива - PullRequest
0 голосов
/ 07 мая 2020

Я понимаю, что здесь есть несколько других вопросов о соединении 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. Попытка 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/ есть соединение, но оно есть только в одном списке элементов. Как я могу присоединиться к подмассивам, не затрагивая структуру родителей?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...