格式错误的JSON字符串,编码问题?

时间:2013-04-16 10:49:26

标签: json perl

我正在请求Web服务并获取JSON数据,如下所示。但是,我一直收到以下错误:

  

格式错误的JSON字符串,无论是数组,对象,数字,字符串还是原子,在/ usr / share / perl5处的字符偏移0(在“\ x {feff} \ x {feff} {”ur ...“之前) /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验证器中验证正常。但我不知道还有什么可以寻找的。请帮助,谢谢。

2 个答案:

答案 0 :(得分:2)

\ x {feff}是BOM(字节顺序标记)。我不确定它是否在JSON开头被允许,但绝对不应该重复。

答案 1 :(得分:1)

感谢choroba提示我查找BOM。 Greped第三方库文件生成url并确实在其中找到了BOM。

  1. grep -rl $'\xEF\xBB\xBF' . #Good BOM?
  2. perl -pi -nle 's/^\xEF\xBB\xBF//' *.lib#删除它们!
  3. 欢呼声。