2012-11-16 163 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

你能詳細闡述一下如何使用? –