Фильтрация массива внутри JSON w / jq с сохранением окружающей структуры - PullRequest
0 голосов
/ 19 декабря 2018

Данные JSON, как показано ниже, я хочу отбросить, когда "bar" = "cccc" без изменения структуры.

{
      "foofoo": {
        "barbar": [
          {
            "foo": "0000",
            "bar": "aaaa"
          },
          {
            "foo": "1111",
            "bar": "bbbb"
          },
          {
            "foo": "2222",
            "bar": "cccc"
          }
          ]
      }
}

что-то подобное делает свое дело, но изменяет структуру JSON.

.foofoo.barbar[] | select(.bar !="cccc")

Результаты:

{
  "foo": "0000",
  "bar": "aaaa"
}
{
  "foo": "1111",
  "bar": "bbbb"
}

Необходимый результат:

{
  "foofoo": {
    "barbar": [
    {
      "foo": "0000",
      "bar": "aaaa"
    }
    {
      "foo": "1111",
      "bar": "bbbb"
    }
    ]
  }
}

Спасибо!

1 Ответ

0 голосов
/ 19 декабря 2018

Проблема с вашей попыткой состоит в том, что вы расширили .foofoo.barbar, написав .foofoo.barbar [].

Вместо этого вам нужно сбросить его:

.foofoo.barbar |= map(select(.bar !="cccc"))
...