Json 无slurp的流到数组转换器

Json 无slurp的流到数组转换器,json,jq,Json,Jq,我的JSON输入: { "Key": "Team", "Value": "AA" } { "Key": "Division", "Value": "BB" } 期望输出: [ { "Key": "Team", "Value": "AA" }, { "Key": "Division", "Value": "BB" } ] 我无法使用--slurp选项,因为我正处于复杂的jq代码中 上面提到的输入是我函数的结果,我需要将其转换为数组进行进一步处理 常见问题

我的JSON输入:

  {  "Key": "Team",     "Value": "AA" }
  {  "Key": "Division", "Value": "BB" }
期望输出:

[
  {  "Key": "Team",     "Value": "AA" },
  {  "Key": "Division", "Value": "BB" }
]
我无法使用
--slurp
选项,因为我正处于复杂的jq代码中

上面提到的输入是我函数的结果,我需要将其转换为数组进行进一步处理

常见问题解答中推荐的解决方案:

产生一些不同的东西:

[
  {  "Key": "Team",     "Value": "AA" }
]
[
  {  "Key": "Division", "Value": "BB" }
]

如果您的输入确实是一个不可恢复的流,并且如果您不能使用slurp选项,那么最简单的方法可能是使用jq 1.5的
inputs
filter,大致如下:

jq-n'[输入]'


如果不使用-n选项,那么
输入将看不到第一个JSON实体。如果不能使用-n选项,那么就使用
[,inputs]

我认为您所需要的就是使用jq数组构造函数语法。即,将生成流的任何复杂表达式封装在一对
[]

[ some_complex_expression ]
这里有一个例子。为了便于论证,我将使用一个函数来代替任何复杂的表达式。e、 g

def some_complex_expression:
  {  "Key": "Team",     "Value": "AA" },
  {  "Key": "Division", "Value": "BB" }
;
如果我们只执行这个表达式

some_complex_expression
结果是我们预期的两个对象的流:

{
  "Key": "Team",
  "Value": "AA"
}
{
  "Key": "Division",
  "Value": "BB"
}
但是如果我们将表达式括在
[]

[ some_complex_expression ]
结果是一个包含流中对象的单个数组

[
  {
    "Key": "Team",
    "Value": "AA"
  },
  {
    "Key": "Division",
    "Value": "BB"
  }
]

cat-json | jq-n'[inputs]'与cat-json | jq-s'具有完全相同的限制。