Как перебирать объекты из массива JSON в пакетном скрипте - PullRequest
0 голосов
/ 26 октября 2018

У меня есть пакетный скрипт Windows для выполнения запроса POST с использованием curl и чтения данных из файла 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 голосов
/ 26 октября 2018

Использование 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...