У меня есть ряд данных для ввода в базу данных. Пользовательский интерфейс для ввода данных не подходит для массового ввода, поэтому я пытаюсь сформулировать эквивалент командной строки. Когда я просматриваю сетевой запрос пользовательского интерфейса в Chrome, я вижу запрос PUT объекта json. Когда я пытаюсь повторить запрос
curl -H 'Accept: application/json' -X PUT '{"tags":["tag1","tag2"],"question":"Which band?","answers":[{"id":"a0","answer":"Answer1"},{"id":"a1","answer":"answer2"}]}' http://example.com/service`
Я получаю ошибку
curl: (3) [globbing] вложенные фигурные скобки не поддерживаются в позиции X
Где X - позиция символа первого "[".
Как я могу ПОСТАВИТЬ объект json, который включает в себя массив?
Хотя в исходном сообщении были другие проблемы (например, отсутствовал "-d"), сообщение об ошибке более общее.
Это потому, что фигурные скобки {} и квадратные скобки [] - это специальные символы подстановки в curl. Чтобы отключить это подстановку, используйте параметр « -g ».
Например, следующий запрос фасета Solr завершится ошибкой без «-g» для отключения подстановки локонов :
curl -g 'http://localhost:8983/solr/query?json.facet={x:{terms:"myfield"}}'
источник
-g
сработало, как ожидалось. Спасибо @YonikСледует отметить, что
Accept
заголовок сообщает серверу что-то о том, что мы принимаем обратно, тогда как соответствующий заголовок в этом контекстеContent-Type
Часто рекомендуется указывать
Content-Type
asapplication/json
при отправке JSON. Для curl синтаксис:Итак, полная команда curl будет такой:
источник
Попробуйте использовать одинарную кавычку вместо двойных кавычек вместе с -g
Для меня сработал следующий сценарий
С УЧАСТИЕМ
Это особенно решило мою ошибку: ошибка команды curl: неверный URL-адрес - первый символ
источник
Единственное, что помогло, - это использовать файл JSON вместо основного текста json. На основе того, как отправить содержимое файла в виде тела с помощью cURL
источник