Json 无slurp的流到数组转换器
我的JSON输入: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代码中 上面提到的输入是我函数的结果,我需要将其转换为数组进行进一步处理 常见问题
{ "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'具有完全相同的限制。