2016-05-13 191 views
1

我試圖在PHP.But JSON解碼成陣列我的JSON是一個字符串中像的Json解碼返回NULL

string(307) " string(290) "{"id":"1","name":"test name","rowno":"0","note":"test notes","created_date":"2016-05-01","updated_date":"2016-05-12 05:08:05"}" " 

串! 如何將其轉換爲數組。

+0

這是'json'的'var_dump()'。 json在哪裏生產?顯示生成它的代碼。 – Darren

+1

從哪裏得到字符串(307)「字符串(290)」? –

回答

3

這看起來像你試圖解碼(或試圖輸出)的數據與var_dump()。這不是你需要的功能;你需要的是json_decode()

$data = json_decode($json); 

如果這不是問題,和你實際接收數據如上,那麼你就必須剝離出來 - 最有可能使用像一個正則表達式以下:

$s = 'string(307) " string(290) "{"id":"1","name":"test name","rowno":"0","note":"test notes","created_date":"2016-05-01","updated_date":"2016-05-12 05:08:05"}" "'; 

preg_match('/\{(.*)\}/', $s, $matches); 

print_r($matches); 

這將返回您的json

Array 
(
    [0] => {"id":"1","name":"test name","rowno":"0","note":"test notes","created_date":"2016-05-01","updated_date":"2016-05-12 05:08:05"} 
    [1] => "id":"1","name":"test name","rowno":"0","note":"test notes","created_date":"2016-05-01","updated_date":"2016-05-12 05:08:05" 
) 

因此,您可以在$matches內正確解碼。

正則表達式是一個野獸我,所以我會盡力解釋儘可能地表達是什麼在做:

  • \{首開{
  • (.*)匹配匹配其間
  • \}任何字符匹配關閉}
+0

是的,你是正確的。問題是我正在使用var_dump()而不是echo.I改變了它,它工作正常。謝謝你:-) – Shashikala

+0

經過大量的RND,這就是爲我工作和解決問題的答案。 – Jigar7521