Подтвердить что ты не робот

Как избежать одиночных кавычек в двойные кавычки в одинарные кавычки

Вот пример командной строки, который соответствует этому описанию:

curl http://dumbdomain.com/solr/collection2/update/json -H 'Content-type: application/json' -d '{ "add": { "doc": { "uid": "79729", "текст": "У меня есть ваш номер" }}} '

Я уже пробовал\'(не ускользнул), url закодирован (не urldecoded на этом другом конце!) и' '(цитата исчезает!), без успеха.

4b9b3361

Ответ 1

Если вы замените 'по кодировке Юникод' (это\u0027), то он работает:

curl http://dumbdomain.com/solr/collection2/update/json -H 'Content-type:application/json' -d ' { "add": { "doc": { "uid": "79729", "text" : "I\u0027ve got your number"} } }'

Странно, но стоит знать!

Ответ 2

Обычным обходным решением в таких случаях является размещение данных в файле и публикация.

$ cat post.json
{ "add": { "doc": { "uid": "79729", "text" : "I've got your number"} } }

И затем вызовите:

curl -H "Content-type:application/json" --data @post.json http://dumbdomain.com/solr/collection2/update/json

Это избавит вас от необходимости избегать кавычек в json.

Ответ 3

Если вы используете Windows (эта проблема обычно не возникает на * nix), вы можете вывести вывод из эха в curl, чтобы избежать полного экранирования:

echo {"foo": "bar", "xyzzy": "fubar"} | curl -X POST -H "Content-Type: application/json" -d @- localhost:4444/api/foo

Ответ 4

Вы имеете в виду, как правильно получить JSON через командную строку? Если вы используете Windows, тогда вам нужно быть осторожным, как вы избегаете своей строки. Он работает, если вы используете двойные кавычки вокруг всей строки данных, а затем избегаете двойных кавычек для JSON. Например:

curl http://dumbdomain.com/solr/collection2/update/json -H 'Content-type:application/json' -d "{ \"add\": { \"doc\": { \"uid\": \"79729\", \"text\" : \"I've got your number\"} } }"