jq получаем атрибут вложенного объекта

Я нашел эту тему, которая похожа на вашу проблему. Он называется: Finde Info.plist.

выдержка

В 10.8 и более поздних версиях процесс агента CFPreferences (cfprefsd) будет кэшировать информацию из этих файлов и асинхронно записывать в них. Это означает, что прямое изменение plist-файлов вряд ли даст ожидаемые результаты (новые настройки не обязательно будут считаны и даже могут быть перезаписаны). Для взаимодействия с системой предпочтений следует использовать API NSUserDefaults или CFPreferences, или команду defaults(1).

Источник: Примечание о выпуске

Эта тема также указывает на эту статью под названием: Как вручную редактировать plist-файлы defaults в Mavericks.

1
09.03.2019, 14:15
1 ответ

Здесь у вас есть два основных варианта (с вашим полным файлом):

jq '.categories[][].notificationURL' bundle.json
jq '.categories[] |.[].notificationURL' bundle.json

В первом вы применяете операцию []два раза подряд, а во втором вы составляете два отдельных фильтра вместе с оператором канала. Я считаю, что использование дополнительных каналов намного проще в работе и отладке, но они оба идентичны для ваших целей.

.[]общая итерация всегда применяется к одному входному значению этой итерации, поэтому она должна быть первым элементом в выражении и является синтаксической ошибкой в ​​любом другом месте, но []применяется к определенному значению слева от него -все в порядке.

Сам факт того, что можно писать abc[]вообще, а не только .[], плохо -описан в документации jq, но можно. Вы можете думать о .[]как о применении []к фильтру идентичности ., хотя я думаю, что на самом деле это частный случай.


В этом конкретном случае вы можете уменьшить его до:

jq '.[][][].notificationURL' bundle.json

, который применяет операцию итератора трижды подряд, поскольку в объекте верхнего -уровня есть только одна ключевая «категория».

5
27.01.2020, 23:23

Теги

Похожие вопросы