Как отфильтровать некоторый массив в подобъекте с помощью object в файле json с помощью jq

#json #jq

#json #jq

Вопрос:

Мне нужно отфильтровать JSON с помощью вложенной структуры, как показано ниже. Все объекты в массиве b, где атрибут x содержит «z» в значении x, должны быть отфильтрованы. Остальное должно оставаться в файле.

 {
    "a": {
        "b": [
            {
                "c": "1",
                "x": "aaa",
            },
            {
                "c": "2",
                "x": "aza",
            },
            {
                "c": "7",
                "x": "azb",
            }
        ]
    },
    "d": {
        "e": [
            "1"
        ],
        "f": [
            "2"
        ]
    }
}
  

Ожидаемый результат:

 {
  "a": {
    "b": [
      {
        "c": "1",
        "x": "aaa"
      }
    ]
  },
  "d": {
    "e": [
      "1"
    ],
    "f": [
      "2"
    ]
  }
}
  

Комментарии:

1. что вы пробовали до сих пор и каков ваш ожидаемый результат?

2. Ожидаемый результат jq должен быть: { «a»: { «b»: [ { «c»: «1», «x»: «aaa», }, ] }, «d»: { «e»: [ «1» ], «f»:[ «2» ] } }

Ответ №1:

используйте select с contains :

 jq '.a.b|=[.[]|select(.x|contains("z")|not)]' file