35

この説明に適合するコマンド ラインの例を次に示します。

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

私はすでに \' (エスケープされていない)、URL エンコード (この反対側で URL デコードされていない!)、および '' (引用符が消える!) を試しましたが、成功しませんでした。

4

4 に答える 4

62

' を Unicode でエンコードされた ' (\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"} } }'

奇妙ですが、知っておく価値があります!

于 2013-09-04T11:35:37.260 に答える
13

Windows を使用している場合 (通常、この問題は *nix では発生しません)、出力を echo から curl にパイプして、エスケープを完全に回避できます。

echo {"foo": "bar", "xyzzy": "fubar"} | curl -X POST -H "Content-Type: application/json" -d @- localhost:4444/api/foo
于 2014-04-17T21:59:45.107 に答える
3

コマンドライン経由で渡された 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\"} } }"
于 2013-09-04T11:29:54.607 に答える