2013-04-16 66 views
1

我正在請求一個Web服務並獲取JSON數據,如下所示。不過,我不斷收到以下錯誤:格式不正確的JSON字符串,編碼問題?

malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "\x{feff}\x{feff}{"ur...") at /usr/share/perl5/JSON/Any.pm

http請求:

Date: Tue, 16 Apr 2013 10:41:03 GMT 
Server: nginx/0.7.67 
Content-Type: application/json; charset=utf-8 
Client-Date: Tue, 16 Apr 2013 10:41:03 GMT 
Client-Peer: 127.0.1.1:80 
Client-Response-Num: 1 
Client-Transfer-Encoding: chunked 

JSON數據:

{"url":"http:\/\/example.com\/service\/rest.htm?req_data=<auth_req><request_token>20130416f186a9c0480e2501e73d19dbcd79d354<\/request_token> <\/auth_req>&user=208860&service=auth.execute&sid=0001&format=xml&v=2.0& sign=pn9xjQjzTgQuAMarLDtiZCMaGZm4bSo8aUTGtkSt1GrxPGtK29oIL1DgHveVMwf2n7rxLHzyWrNd%2BYU6%2BxZCzs56JkMtxQMPxEJ%2Bu9Eqk5SRL6EAjWMeKheix5frPyHi0hQ4nnbiVm%2Bx3bF0KFq3cORvVCeq8wBoZU1HQXD%2BuuY%3D"}

我懷疑某種編碼問題,因爲JSON字符串只會驗證罰款jslint JSON驗證。但我不知道還有什麼要尋找。請幫忙,謝謝。

+0

你能顯示產生錯誤的腳本嗎? – RickF

回答

2

\ x {feff}是BOM(字節順序標記)。我不確定它是否允許在JSON的開始,但絕對不應該重複。

1

感謝choroba提示我尋找物料清單。 Greped第三方庫文件生成url,並確定在其中找到BOM。

  1. grep -rl $'\xEF\xBB\xBF' .#有BOM嗎?
  2. perl -pi -nle 's/^\xEF\xBB\xBF//' *.lib#刪除它們!

歡呼聲。