问题描述
我试图将数据从json文件存储到PHP变量。但是当我尝试回显变量以供以后使用时,它将无法正常工作。
这是我的json文件:
"[{\"channelId\":150342342,\"channelName\":\"example.no\",\"channelUrl\":\"http:\/\/www.example.no\"},{\"channelId\":1529564329,\"channelName\":\"example2.no\",\"channelUrl\":\"http:\/\/www.example2.no\"},{\"channelId\":1536534822,\"channelName\":\"example3.no\",\"channelUrl\":\"http:\/\/www.example3.no\"}]"
这是我的代码:
<?PHP
require_once('config.PHP');
$channeljson = file_get_contents('channels.json');
$data = json_decode($channeljson,true);
$channelid = $data['channelId'];
$channelname = $data['channelName'];
$channelurl = $data['channelUrl'];
我也尝试了许多其他方式。.
任何人都有可行的提示吗?
解决方法
您的文件包含代表字符串的json,因为它以"
字符开头和结尾。另一个问题是转义字符\
。
如果您不想更改写入json文件的例程,则可以通过更正无效的json来解决问题:
$data = json_decode(trim(stripslashes($channeljson),'"'),true); // Removes the escape and the enclosing " characters
还有一个问题:json表示对象数组(由于将true传递给第二个json_decode函数,因此是数组),并且您试图像常规数组一样访问$data
。
请参阅$ data内容:
array(3) {
[0]=>
array(3) {
["channelId"]=>
int(150342342)
["channelName"]=>
string(10) "example.no"
["channelUrl"]=>
string(21) "http://www.example.no"
}
[1]=>
array(3) {
["channelId"]=>
int(1529564329)
["channelName"]=>
string(11) "example2.no"
["channelUrl"]=>
string(22) "http://www.example2.no"
}
[2]=>
array(3) {
["channelId"]=>
int(1536534822)
["channelName"]=>
string(11) "example3.no"
["channelUrl"]=>
string(22) "http://www.example3.no"
}
}