【问题标题】:Iteratively posting via cURL set of Json records in bash在 bash 中通过 cURL 的 Json 记录集迭代发布
【发布时间】:2016-11-13 19:12:07
【问题描述】:

我在文件中有一组 Json 记录。我想反复发布。 例如文件“jsondata.dat”包含以下 json 记录

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

我想发布每个 json 记录,即

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

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

【问题讨论】:

    标签: json bash awk jq


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我宁愿使用这样的 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
      

      【讨论】:

        【解决方案3】:

        试试这个 -

        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"
                     },
        

        【讨论】:

          猜你喜欢
          • 2015-04-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-17
          • 2011-03-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多