json decode返回空字符串

时间:2012-11-16 09:16:30

标签: php curl json

这是我的原始代码:

$returnArray=array(
    'loginUrl'=>$url."/?page_id=2732",
    'clientNumber'=>$clientNumber,
    'clientName'=>$_SESSION['userName']
);
echo json_encode($returnArray);

这是我的接收结束代码:

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

$result = trim(curl_exec($ch));

curl_close($ch);

$result = json_decode($result,true);

最后这里是$result var_dump

string(194) "
{"loginUrl":"http:\/\/www.xxxxxxxxxxxx.co.il\/chtsystem\/?page_id=2732","clientNumber":"11111","clientName":"\u05d0\u05d1\u05d9 \u05d4\u05de\u05d3\u05d1\u05d9\u05e8 - www.yyy-yyyyyyy.co.il"}"

$result从解码中出现null,当打印json错误时,我可以看到"JSON_ERROR_SYNTAX"已开启

这里有什么问题?

1 个答案:

答案 0 :(得分:1)

在JSON字符串中有一个领先的新行没有错。但是你可能有一个UTF-8 BOM,json_decode()无法应对。

BOM最可能的来源是IDE或文本编辑器。验证其设置并确保在没有BOM的情况下保存UTF-8文件。此类BOM不是强制性的,通常只会产生类似这样的问题。

<强>更新

你可以替换它:

var_dump($result);

......用这个:

var_dump(bin2hex($result));

...以获得更准确的JSON字符串内容视图。 UTF-8 BOM会将自己显示为:

efbbbf...