2012-11-16 131 views
1

这里是我的产地代码: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当打印出来的时候rors我可以看到"JSON_ERROR_SYNTAX"是在

这里有什么问题?

+2

您在输出之前有一个新行或一个BOM字符。检查一下。 –

+0

@MihaiIorga做了一个领先的换行旅程'json_decode'?我不认为它应该。 –

+0

@JanDvorak我懒得纠正自己,我想说,有一个由UTF8 BOM字符生成的新行。 –

回答

1

在您的JSON字符串中创建一个新的首行没有任何错误。但是你可能有一个UTF-8 BOM,并且json_decode()不能解决这个问题。

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

更新:本

var_dump($result); 

...:

您可以更换该

var_dump(bin2hex($result)); 

...获取您的JSON字符串的更准确的视图内容。 A UTF-8 BOM会显示为:

efbbbf... 
+0

以及我已经保存两端使用UTF-8没有BOM,仍然出来NULL –

+0

使用[bin2hex()](http://es1.php.net/bin2hex)确定实际的JSON输出之前的确切字符。 –

+0

你能详细阐述一下如何使用? –