Json не определен в cURL

Мне нужно автоматизировать вставку задач в Jira, поэтому мне нужно использовать REST API, я запускаю curl из командной строки, вот моя команда

C:\WINDOWS\system32>curl.exe -D- -u fred:fred -X POST --data { "fields": {"project": { "key"="ZZZ-180" }, "summary": "REST TESTING" , "description": "Creation of a testing issue" , "issuretype" { "name": "Bug"}}} -H "Content-Type: application/json" http://ABCD.com:XXXX/rest/api/2/issue/

и вот что я получаю:

curl: (6) Could not resolve host: fields
curl: (3) [globbing] unmatched brace at pos 10
curl: (3) [globbing] unmatched brace at pos 2
curl: (6) Could not resolve host: key=
curl: (6) Could not resolve host: ZZZ-180
curl: (3) [globbing] unmatched close brace/bracket at pos 1
curl: (6) Could not resolve host: summary
curl: (6) Could not resolve host: REST TESTING
curl: (6) Could not resolve host: ,
curl: (6) Could not resolve host: description
curl: (6) Could not resolve host: Creating of a testing issue
curl: (6) Could not resolve host: ,
curl: (6) Could not resolve host: issuretype
curl: (3) [globbing] unmatched brace at pos 2
curl: (6) Could not resolve host: name
curl: (3) [globbing] unmatched close brace/bracket at pos 4

Может ли кто-нибудь помочь мне разрешить cURL определять код JSON, записанный в данных?


person Shereen Hussein    schedule 26.06.2013    source источник
comment
Вы должны указать параметр в кавычках, иначе curl будет использовать { в качестве данных и интерпретировать другие части как параметры (неизвестно)...   -  person Stefano Sanfilippo    schedule 26.06.2013
comment
Я пробовал, но все равно та же ошибка   -  person Shereen Hussein    schedule 26.06.2013
comment
также удалите пробелы {"fields":{   -  person Blundell    schedule 29.11.2013
comment
@ Бланделл. В моем случае были пробелы в строке. Так необычно в моем понимании. Спасибо.   -  person m3nda    schedule 25.07.2015


Ответы (2)


Вам нужно будет заключить строку в кавычки, но самый простой способ — поместить данные JSON в файл и попросить cURL прочитать их:

C:\WINDOWS\system32>curl.exe -D- -u fred:fred -X POST --data @data_to_send.json -H "Content-Type: application/json" http://ABCD.com:XXXX/rest/api/2/issue/

Обратите внимание на @ перед именем файла.

person Stefano Sanfilippo    schedule 26.06.2013
comment
Я попробовал это, но все же код JSON полностью не определен. Как идентифицировать JSON в curl, я никогда раньше не использовал JSON, поэтому извините за отсутствие знаний о том, как установить JSON для использования в cURL - person Shereen Hussein; 26.06.2013
comment
Вам не нужно устанавливать JSON, JSON — это формат файла ;) cURL просто передаст содержимое data_to_send.json: поместите в него строку JSON и перейдите к папке или укажите полный путь (например, --data C:\path\to\data_to_send.json). - person Stefano Sanfilippo; 26.06.2013
comment
Большое спасибо,,, Проблема сейчас в авторизации в REST API! в любом случае спасибо - person Shereen Hussein; 26.06.2013
comment
Я пытался написать эту команду в сценарии perl для передачи в командную строку... Я использовал возвраты ``, но всегда выдавал ошибку для обозначения @ перед путем к файлу JSON... есть предложения? - person Shereen Hussein; 06.07.2013
comment
как вы цитируете строку? - person bharal; 28.05.2014
comment
Включив его между " и добавив обратную косую черту \ перед всеми ", содержащимися в самой строке. - person Stefano Sanfilippo; 28.05.2014

Ваш --data должен выглядеть примерно так:

"{ \"fields\": {\"project\": { \"key\"=\"ZZZ-180\" }, \"summary\": \"REST TESTING\" , \"description\": \"Creation of a testing issue\" , \"issuretype\" { \"name\": \"Bug\"}}}"
person Olga Vasileva    schedule 21.04.2016