Json Decode返回NULL

时间:2016-05-13 03:51:51

标签: php json

我正在尝试将json解码为PHP中的数组。但我的json就像

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"}" "

字符串中的字符串!! 如何将其转换为数组。

1 个答案:

答案 0 :(得分: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内正确解码。

正则表达式对我来说是一头野兽,所以我会尝试尽可能地解释表达式的作用:

  • \{与第一个打开{
  • 相匹配
  • (.*)匹配中间的任何字符
  • \}与结束}
  • 相匹配