3

Perl (OTRS) で記述されたサービスの Web API を使用しようとしています。データは JSON 形式で送信されます。

JSON 構造内の文字列値の 1 つにポンド記号が含まれており、JSON でコメント文字として使用されているようです。これにより、解析エラーが発生します。

JSON 文字列の解析中に予期しない文字列の終わり

文字列を正常に解析するために文字をエスケープする方法が見つかりませんでした。明らかなスラッシュ エスケープの結果は次のようになります。

文字列内の不正なバックスラッシュ エスケープ シーケンス

それを回避する方法はありますか?

更新: 使用しようとしている URL は次のようになります (単純化されていますが、それでもエラーが発生します)。

http://otrs.server.url/otrs/json.pl?User=username&Password=password&Object=TicketObject&Method=ArticleSend&Data={"Subject":"[Ticket#100000] Test Ticket from OTRS"}
4

2 に答える 2

7

使用Uri::escape:

use URI::Escape;
my $safe = uri_escape($url);

安全でない可能性のある文字のリストについては、rfc1738を参照してください。

于 2011-04-07T10:03:20.550 に答える
5

ハッシュ記号 は、JSON ではなくURL で特別な意味を#持ちます。あなたの URL は、削除サーバーがそれを見る前にハッシュで切り捨てられている可能性があります:

http://otrs.server.url/otrs/json.pl?User=username&Password=password&Object=TicketObject&Method=ArticleSend&Data={"Subject":"[Ticket

これは、リモート サーバーがData. 解決策は、パラメーターを一緒に貼り付けて URL を形成する前に、パラメーターを URL エンコードすることです。eugene y がその方法を教えてくれます。

于 2011-04-07T10:08:18.833 に答える