我有一个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"
}
}]
答案 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
。