将 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


  1. 感谢@pmf