2016-11-13 22 views
1

ファイルにJsonレコードのセットがあります。私は繰り返し投稿したいと思います。例えば、ファイル "jsondata.dat" については は、私は別のcURLのポストに各JSONレコードすなわちcURLを繰り返し投稿bashのJsonレコードのセット

{ 
    "name": "name_X", 
    "mark": "mark_X" 
} 

を投稿したいJSONレコード

{ 
     "json_records":[ 
      { 
       "name": "name_1", 
       "mark": "mark_1" 
      }, 
       { 
       "name": "name_2", 
       "mark": "mark_2" 
      } 
     ] 
} 

次が含まれています。どのようにbashでこれを達成するには?

答えて

3

#!/usr/bin/env python 

import json 

i = 0 
for record in json.load(open('raw.json', 'r'))['json_records']: 
    open('record_{}.json'.format(i), 'w').write(json.dumps(record)) 
    i += 1 

そしてカールとは別に、各record_X.jsonを処理各レコードを1行としてパイプし、その出力をwhileループで読み取ってcurlに渡します。

jq -c '.json_records[]' | while IFS= read -r rec; do 
    curl -X POST -d"$rec" "$URL" 
done 
0

私はむしろあなたのファイルを前処理このようにPythonスクリプトで各レコードを抽出したい:私はjqを使用する

curl host -d recrod_X.json 
0

これを試してみてください -

[email protected]:~$ egrep 'name|mark' kk -A 1 -B 1 ###A for Above and B for Below 
      { 
       "name": "name_1", 
       "mark": "mark_1" 
      }, 
       { 
       "name": "name_2", 
       "mark": "mark_2" 
      }, 
関連する問題