2016-06-13 7 views
0

私は単純なbashスクリプトで、JUnitを使ってCURLとParseを使ってJSON値を取得しています。スクリプト私が使用しています:カールのBASHスクリプトでCURLの出力からJQで要素タイプを1つだけ抽出する方法?

var=$(curl -X GET -k -H "SEC: xxxxxx" 'https://localhost/api/reference_data/sets/malopid?fields=data(value)' | jq '.[]') 
echo $var; 

出力は次のとおりです。私は以下のようにOPを期待してい

[ 
    { 
    "value": "11.945403842773683082" 
    }, 
    { 
    "value": "11.-4947520229339316351" 
    }, 
    { 
    "value": "11.-5919145046027777143" 
    } 
] 

しかし:

11.945403842773683082 
11.945403842773683082 
11.945403842773683082 

それがこれを行うことは可能ですか。?このnosを使用すると、別のAPIをクエリします。論理で私を助けてください?これで私を助けてください。

+0

問題点を教えてください。 APIはJSONオブジェクトを返します。あなたはリストを望みますか?配列を循環させて別の配列に値を入れますか? – Eric

答えて

0

私はあなたのダミー出力が間違っている期待していて、あなたが実際に以下に記載されているものとします

jq '.[].value' -r <<< '[ 
    { 
    "value": "11.945403842773683082" 
    }, 
    { 
    "value": "11.-4947520229339316351" 
    }, 
    { 
    "value": "11.-5919145046027777143" 
    } 
]' 

出力は次のようになります。このオプションでは

11.945403842773683082 
11.-4947520229339316351 
11.-5919145046027777143 

--raw-output/-r:
、場合フィルタの結果は文字列ですが、引用符付きのJSON文字列としてフォーマットされるのではなく、標準出力に直接書き込まれます。これは、jqフィルターを非JSONベースのシステムと話す場合に便利です。

関連する問題