如何在批处理脚本中从JSON数组文件迭代对象

时间:2018-10-26 12:41:44

标签: json batch-file curl

我有一个Windows批处理脚本,可以使用curl执行POST请求,并从JSON文件读取数据,它仅适用于文件中的单个对象,看起来像这样。

curl -u username@password -H "Content-Type: application/json" -d @file.json http://apiurl.com 

和json文件是这样的:

{
  "name": "Empty name",
  "properties": {
    "active": "True",
    "subcity_zone": "East Hararge",
    "woreda": "Meta"
   }
}

但是现在我想通过迭代每个项目来向数组中的每个对象发送请求。那么,如何从文件中迭代每个JSON对象?

这是新的JSON数组文件的样子:

[{
    "name": "test facility I",
    "properties": {
        "active": "True",
        "city": "",
        "subcity_zone": "East Hararge",
        "woreda": "Meta"
    }
},
{
    "name": "test facility II",
    "properties": {
        "active": "True",
        "subcity_zone": "East Hararge",
        "woreda": "Girawa"
    }
}]

1 个答案:

答案 0 :(得分:1)

使用jq

jq -c '.[]' file | while read js; do 
  curl -u username@password -H "Content-Type: application/json" -d @<(echo "$js") http://apiurl.com
done

jq命令将read命令读取的一行中的每个对象提取到$js变量中。

<(echo "$js")创建一个临时文件,该文件将传递到curl