2016-11-02 2 views
0

このタスクはthis oneと似ていますが、私の場合は別の方法で行きたいと思います。 は、だから我々が入力を持っていると言う:jsonとjsonのストリームをjqで

[ 
    { 
     "name": "John", 
     "email": "[email protected]" 
    }, 
    { 
     "name": "Brad", 
     "email": "[email protected]" 
    } 
] 

と所望の出力は次のとおりです。

#!/bin/bash 

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

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

が、それは次のとおりです。

{ 
    "name": "John", 
    "email": "[email protected]" 
} 
{ 
    "name": "Brad", 
    "email": "[email protected]" 
} 

私はループの中でそれを行いますbashの関数を記述してみました明らかに極端に遅いです...

使用方法はありますか?jq fまたはこれ?

答えて

1

あなたがこれを使用することができます:

jq '.[]' file 

をあなたは.[index]構文を使用しますが、完全にインデックスを省略した場合、それは、配列のすべての要素を返します。

テスト: "[]"

$ jq '.[]' file 
{ 
    "email": "[email protected]", 
    "name": "John" 
} 
{ 
    "email": "[email protected]", 
    "name": "Brad" 
} 
+0

最適です。ありがとう! – matt525252

関連する問題