2016-05-13 155 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