2011-04-07 94 views
2

我正在嘗試使用Perl(OTRS)編寫的服務的Web API。 數據以JSON格式發送。Perl JSON英鎊符號轉義

JSON結構中的一個字符串值包含一個磅符號,顯然它在JSON中用作註釋字符。 這導致分析錯誤:

unexpected end of string while parsing JSON string

我怎麼也找不到逃跑的字符,以獲得成功解析字符串。 明顯的斜線逸出結果:

illegal backslash escape sequence in string

任何想法如何逃生呢?

更新: 我想使用的URL看起來就像這樣(簡化,但仍然導致錯誤):

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

當你說'英鎊符號',你的意思是#或£?請注意,名稱'磅'並不是前者普遍認可的。 :) – Spudley 2011-04-07 10:08:09

回答

7

使用Uri::escape

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

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

+0

當然,就是這樣...看着錯誤的樹。 – Variant 2011-04-07 10:17:12

5

散列符號#有一個special meaning in URLs,而不是JSON。您的網址可能是得到的散列截斷刪除服務器甚至看到它之前:

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

這意味着遠程服務器獲取Data錯位JSON。解決方案是在將它們粘貼在一起形成您的URL之前對您的參數進行URL編碼; eugene y告訴你如何做到這一點。