1

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

格式错误的 JSON 字符串,既不是数组、对象、数字、字符串也不是原子,在 /usr/share/perl5/JSON/ 的字符偏移量 0 处(在 "\x{feff}\x{feff}{"ur..." 之前)任何.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 验证器中验证得很好。但我不知道还要寻找什么。请帮忙,谢谢。

4

2 回答 2

2

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

于 2013-04-16T10:52:41.153 回答
1

感谢 choroba 提示我寻找 BOM。Greped 3rd 方库文件生成url并肯定在其中找到了 BOM。

  1. grep -rl $'\xEF\xBB\xBF' . # 有物料清单吗?
  2. perl -pi -nle 's/^\xEF\xBB\xBF//' *.lib # 删除它们!

干杯。

于 2013-04-16T16:03:56.900 回答