LINUX.ORG.RU

jq трансформация JSON. Кое что не получается

 


0

3

Перечитал и перепробовал много, но ничего не получилось. Задача элементарная. Есть JSON, нужно при помощи jq оставить в нем только нужные поля. Всё.

Например, дано

{data:[{k1:v1,k2:v2,k3:v3},{k1:v1,k2:v2,k3:v3},{k1:v1,k2:v2,k3:v3}]}

требуется получить ‘{data:[{k2:v2,k3:v3},{k2:v2,k3:v3},{k2:v2,k3:v3}]}’

т.е. оставить только поля k2 и k3 в полном виде, а не только значения.

При этом, нежелательно использовать фильтр del, т.к. удаляемых полей много больше, чем оставляемых и их имена длинные и неудобоваримые. Лениво их перечислять. В документации этот случай обходится стороной.

Ответ на: комментарий от Entmatix

Немного измененный пример, берем значение data и его трансформируем.

Это работает, но нужен обратный вариант. Не удалить, а оставить. Что тут не ясно?

echo ‘{«data»:[{«k1»:«v1»,«k2»:«v2»,«k3»:«v3»},{«k1»:«v1»,«k2»:«v2»,«k3»:«v3»}]}’|jq ‘.data|del(.[].k2)’

[ { «k1»: «v1», «k3»: «v3» }, { «k1»: «v1», «k3»: «v3» } ]

MariaRTI
() автор топика