将 json 值的列表转换为数组
Transform a list of json value into an array
有没有办法将 JSON 值的列表转换/转换为数组?
想法是复制 -s / --slurp 的功能,但用于“内部”使用。
当我们遍历数组的值时,我们得到一个值列表。我想有一种方法可以将列表转换回数组,但不使用 [ ] 括起表达式,而不使用数组构造函数。
我希望它具有过滤器的形式。我已经用 reduce、foreach 和 bindings 尝试了各种东西,但它不起作用
没有
您问的是如何使用 STREAM | ...
形式收集流(列表)的输出。很遗憾,这是不可能的。
当管道过滤器 A
进入过滤器 B
时,如 A | B
,并且 A
恰好输出一个流,然后 B
被馈送每个流的项目 分开 ,即 B
运行的次数与来自 A
的项目一样多。因此,单次执行 B
将无法查看或收集流的所有(其他)项目。[1]
构建数组的代码必须包含STREAM
.
[ STREAM ]
reduce STREAM as $_ ( []; .+[$_] )
def array( s ): [ s ]; array( STREAM )
ARRAY | map( STREAM )
([ ARRAY | STREAM ]
的替代方法。)
- 等等
例如,
jq --slurp .
也可以写成
jq --null-input '[ inputs ]'
但是没有以下形式的等价物:
jq '...'
简而言之,你有一个XY Problem。
- 感谢@pmf
有没有办法将 JSON 值的列表转换/转换为数组?
想法是复制 -s / --slurp 的功能,但用于“内部”使用。
当我们遍历数组的值时,我们得到一个值列表。我想有一种方法可以将列表转换回数组,但不使用 [ ] 括起表达式,而不使用数组构造函数。
我希望它具有过滤器的形式。我已经用 reduce、foreach 和 bindings 尝试了各种东西,但它不起作用
没有
您问的是如何使用 STREAM | ...
形式收集流(列表)的输出。很遗憾,这是不可能的。
当管道过滤器 A
进入过滤器 B
时,如 A | B
,并且 A
恰好输出一个流,然后 B
被馈送每个流的项目 分开 ,即 B
运行的次数与来自 A
的项目一样多。因此,单次执行 B
将无法查看或收集流的所有(其他)项目。[1]
构建数组的代码必须包含STREAM
.
[ STREAM ]
reduce STREAM as $_ ( []; .+[$_] )
def array( s ): [ s ]; array( STREAM )
ARRAY | map( STREAM )
([ ARRAY | STREAM ]
的替代方法。)- 等等
例如,
jq --slurp .
也可以写成
jq --null-input '[ inputs ]'
但是没有以下形式的等价物:
jq '...'
简而言之,你有一个XY Problem。
- 感谢@pmf