使用jq将json数组转换为json流

时间:2016-11-02 14:06:22

标签: json bash jq

此任务类似于this one,但在我的情况下,我想反过来说。 所以说我们有输入:

[
    {
        "name": "John",
        "email": "john@company.com"
    },
    {
        "name": "Brad",
        "email": "brad@company.com"
    }
]

并且所需的输出是:

{
    "name": "John",
    "email": "john@company.com"
}
{
    "name": "Brad",
    "email": "brad@company.com"
}

我尝试编写一个bash函数,它将在循环中执行:

#!/bin/bash

json=`cat $1`
length=`echo $json | jq '. | length'`

for (( i=0; i<$length ; i++ ))
do
echo $json | jq ".[$i]"
done

但显然极其缓慢......

有什么方法可以更好地使用jq吗?

2 个答案:

答案 0 :(得分:1)

您可以使用:

jq '.[]' file

如果使用.[index]语法,但完全省略索引,则会返回数组的所有元素。

<强>测试

$ jq '.[]' file
{
  "email": "john@company.com",
  "name": "John"
}
{
  "email": "brad@company.com",
  "name": "Brad"
}

答案 1 :(得分:1)

你可以申请“。[]”过滤器。

本教程内容非常丰富 https://stedolan.github.io/jq/tutorial/