2015-11-20 65 views
1

我有一個C#客戶端,它發送一個JSON到我的PHP服務器。PHP Json解碼不能在laravel工作

有JSON字符串:

{ 「數據」:[{ 「名稱」: 「1」}]}

及其有效的JSON。當我在PHP沙盒嘗試它的作品不錯

$ad = '{"data":[{"name":"1"}]}'; 

$contents = utf8_encode($ad); 
$results = json_decode($contents); 

var_dump($results->data); 

但是,當我嘗試在laravel 5.1,它不工作良好。

$response = $connection -> getData(); 
// return $response; (Its equal : {"data":[{"name":"1"}]} ) 
$contents = utf8_encode($response); 
$results = json_decode($contents); 

dd($results->data); // Error Trying to get property of non-object 

我希望有人能幫助我。 謝謝!

+1

所以'的var_dump($內容)'** **後你做的東西,然後'echo json_last_error(); var_dump($ results)'在解碼嘗試後。看看真的出來了。 –

+0

JSON_ERROR_CTRL_CHAR – ketom

+0

然後跳過utf8編碼。也許你是雙重編碼或什麼的。 –

回答

0

根據註釋,getData()方法中的socket_read()看起來像一次讀取1個字符,然後將每個NUL終止字符連接到響應字符串中。 json_decoded()在所有額外的NUL字符上窒息。

您可以更新在getData()方法你的邏輯,所以不這樣做它,或者你可以運行結果的str_replace函數:

$response = $connection -> getData(); 

// get rid of the extra NULs 
$response = str_replace(chr(0), '', $response); 

$contents = utf8_encode($response); 
$results = json_decode($contents); 

dd($results->data); 
+0

Awsome!非常感謝!它運作良好! :)) – ketom