Выражение запятой в jq принимает форму P, Q
и, как и все выражения jq, создает поток значений JSON, в этом случае поток, созданный P, сопровождается потоком, созданным Q.
Здесь «поток» означает последовательность из 0 или более JSON значений, и его не следует путать с массивом JSON значений. «Поток JSON значений» сам по себе не является значением JSON.
Если это неясно, вас может заинтересовать мое «Потоковое введение в jq»
Elaboration
Выражения jq сами по себе не являются "типами данных", но каждое выражение jq является фильтром, который принимает в качестве входных данных поток значений JSON и создает поток значений JSON , Используя обозначение JSON* для обозначения «потока JSON значений», понимая, что поток может быть концептуально неограниченным по длине, мы можем рассматривать выражения jq как отображения от JSON* до JSON *.
Это важно понимать, поскольку все выражения jq всегда следует понимать с точки зрения их входных данных. В случае P,Q
важным моментом является то, что если R является выражением jq, то:
R | (P,Q)
эквивалентно:
(R|P), (R|Q)
(Это очень важно во-первых, потому что это делает jq очень мощным - R фактически дублируется, а во-вторых, потому что это сильно отличает поведение jq-канала от внешне схожего поведения shell-труб - рассмотрим, например, P | (Q;R)
в bash.)
Опция командной строки -n указывает, что null
следует использовать в качестве начального JSON значения, например:
jq -n 1,2
производит:
1
2
Параметр командной строки -s
Вызов jq формы jq P
приводит к тому, что каждый элемент JSON в STDIN будет представлен фильтру jq P на Поодиночке.
В отличие от этого, вызов формы jq -s P
заставляет элементы в STDIN оборачиваться в массив JSON, который затем представляется в P.
reduce
, foreach
, foo(P)
, et c
jq также поддерживает сокращение по потоку. Это особенно полезно при использовании встроенного фильтра inputs
, чтобы обойти необходимость использования параметра командной строки -s для обработки потока внешних входных данных.
Параметризованные фильтры, такие как в форме foo(P)
, где P - произвольное выражение jq, также поддерживаются.
Подробнее см. Руководство jq, ранее упомянутый документ и / или другую документацию.