2016-11-23 11 views
0

サービスから呼び出してデータを取得する必要があります。私は私がここに使用私のアプリケーショントークンを持っていること複数のJSONオブジェクトを取り出すためのCurl

curlコマンド

< /example/data/sample.dat xargs -P10 curl -H "Authorization: Bearer $token" -X GET -L > /example/json/data.json 

のためにカールを使用します。あなたは私がサービスへの10件のIDと並行して電話をかけることが見るように

ファイルsample.datだからこの

"http://xxx/marketing/insights/v1/info?id=0553153617,B003W0CI6Y,B000R08E7Y,B001O2SAAU,B00B1MP3MG,B00QRHJBPU,B00007B4DC,0852597088,B0000003H4,1937715213&fields=product.title,product.url,&fieldgroups=default" 
"http://xxx/marketing/insights/v1/info?id=0553153617,B003W0CI6Y,B000R08E7Y,B001O2SAAU,B00B1MP3MG,B00QRHJBPU,B00007B4DC,0852597088,B0000003H4,1937715213&fields=product.title,product.url,&fieldgroups=default" 
"http://xxx/marketing/insights/v1/info?id=0746029853,035,B004SI9OKW,1572841451,B00FC1BQUA,3170218085,B009QJYBVK,B0181P5E42,B01J8JRZ92,0961268611&fields=product.title,product.url,&fieldgroups=default" 
"http://xxx/marketing/insights/v1/info?id=1402206836,B006FQQMZA,1624386903,B001ANZW0O,0872200450,B0035LCSCO,B00JRQ7T5W,1401951341,B00PKSCDRU,B00PKR4UW2&fields=product.title,product.url,&fieldgroups=default" 

のように見えます。

私が受け取る出力は、ファイル/example/json/data.jsonの3つのJSONオブジェクトです。

例:私のpythonを使用してそれを解析する必要がある場合

{.....}{...}{...} 

は今、それが無効なJSONを言って失敗しました。ザッツ正しいファイルは、私が

[{.....},{...},{...}] 

にそれを変更しようとしたsedの今これはJSONのように見えるし、解析することができます使用するので、標準のJSON配列

を表すものではありませんので。このロジックは小規模なデータに対してはうまく機能しましたが、データが大きいほど、私のsedは,をJSONの正しい場所に置くことができず、不正なファイルが作成されたと思います。その結果、PythonのJSONパーサーが失敗します。私は行毎にファイルを読み込むことができる方法

{...} 
{...} 
{...} 

などの各ライン 上の個々のJSONオブジェクトを持つことができる場合

今、私が考えていました。

誰かが私は別のJSONファイルに

{...} 
{...} 
{...} 
+0

これはすべてではありませんが、ほとんど機能しませんでした。真ん中のどこか違和感があります – donny

+0

同じファイルに行くのではなく、別のJSONファイルに書き込むのはなぜですか? – Barmar

+0

ここで私のカールのステートメントを調整するにはどうすればいいですか? – donny

答えて

0

書き込みのように、各ライン上の各結果を出力する個々のjsonsにカールを変更する方法を支援することができます。

i=0 
while read url; do 
    curl -H "Authorization: Bearer $token" -X GET -L > data.$i.json 
    i=$((i+1)) 
done < sample.dat 

ループの1つのファイルに、要素間にコンマ区切り記号を挿入して書き込むこともできます。

i=0 
while read url; do 
    if [[ i -eq 0 ]] 
     then echo '[' 
     else echo ',' 
    fi 
    curl -H "Authorization: Bearer $token" -X GET -L 
    i=$((i+1)) 
done <sample.dat> data.json 
echo ']' >> data.json 
関連する問題