通过 bash 中 Json 条记录的 cURL 集迭代发布

Iteratively posting via cURL set of Json records in bash

我在文件中有 Json 组记录。我想 post 迭代。 例如文件 "jsondata.dat" 包含以下 json 条记录

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

我想 post 每条 json 条记录,即

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

在单独的 cURL 中 post。如何在 bash 中实现这一点?

我宁愿使用这样的 python 脚本预处理您的文件以提取每条记录:

#!/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

然后用 curl 分别处理每个 record_X.json:

curl host -d recrod_X.json

我会使用 jq 将每条记录作为一行,然后使用 while 循环读取该输出以传递给 curl.

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

试试这个 -

vipin@kali:~$ 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"
             },