我正在请求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验证器中验证正常。但我不知道还有什么可以寻找的。请帮助,谢谢。
答案 0 :(得分:2)
\ x {feff}是BOM(字节顺序标记)。我不确定它是否在JSON开头被允许,但绝对不应该重复。
答案 1 :(得分:1)
感谢choroba提示我查找BOM。 Greped第三方库文件生成url
并确实在其中找到了BOM。
grep -rl $'\xEF\xBB\xBF' .
#Good BOM?perl -pi -nle 's/^\xEF\xBB\xBF//' *.lib
#删除它们!欢呼声。