Perl JSON 英镑符号转义

发布于 2024-10-31 02:50:37 字数 601 浏览 0 评论 0原文

我正在尝试使用用 Perl (OTRS) 编写的服务的 Web API。 数据以 JSON 格式发送。

JSON 结构内的字符串值之一包含井号,该符号显然用作 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"}

I am trying to use a web API of a service written in Perl (OTRS).
The data is sent in JSON format.

One of the string values inside the JSON structure contains a pound sign, which in apparently is used as a comment character in JSON.
This results in a parsing error:

unexpected end of string while parsing
JSON string

I couldn't find how to escape the character in order to get the string parsed successfully.
The obvious slash escaping results in:

illegal backslash escape sequence in
string

Any ideas how to escape it?

Update:
The URL I am trying to use looks something like that (simplified but still causes the error):

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

葬花如无物 2024-11-07 02:50:37

使用 Uri::escape

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

参见 rfc1738 可能不安全的字符列表。

Use Uri::escape:

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

See rfc1738 for the list of characters which can be unsafe.

嗳卜坏 2024-11-07 02:50:37

哈希符号 # 具有 URL 中的特殊含义,而不是 JSON 中的特殊含义。您的 URL 可能在删除服务器看到它之前就在哈希处被截断:

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

这意味着远程服务器在 Data 中得到了损坏的 JSON。解决方案是对参数进行 URL 编码,然后将它们粘贴在一起形成 URL;尤金 y 告诉您如何做到这一点。

The hash symbol, #, has a special meaning in URLs, not in JSON. Your URL is probably getting truncated at the hash before the remove server even sees it:

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

And that means that the remote server gets mangled JSON in Data. The solution is to URL encode your parameters before pasting them together to form your URL; eugene y tells you how to do this.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文