无法从PHP中的文件解码JSON

时间:2015-06-06 18:38:14

标签: php arrays json encode

我在PHP中遇到json_decode的麻烦:

我有这个档案:

{1: ['oi','oi'], 2: ['foo','bar']}

这是我的PHP代码:

<?php 
    $string = file_get_contents("quizen.json"); // the file
    $json = json_decode($string);
    echo $json[1][0]
?>

但echo返回任何内容,我使用var_dump,我得到NULL! 有什么问题?

1 个答案:

答案 0 :(得分:4)

问题是您的文件无效JSON,因为它对字符串使用单引号并且将整数作为对象键:

{1: ['oi','oi'], 2: ['foo','bar']}

此外,由于JSON是一个对象,您应该使用json_decode($string, true)将其解码为关联数组。

根据the JSON spec

  

值可以是双引号或数字,或true或false或null,或对象或数组的字符串。

此外,对象键需要是字符串。

如果您将单引号更改为双引号并编辑PHP的decode_json调用以解码为关联数组,则它应该可以正常工作。例如:

JSON:

{"1": ["oi","oi"], "2": ["foo","bar"]}

PHP:

<?php 
    $string = file_get_contents("quizen.json"); // the file
    $json = json_decode($string, true); // set to true for associative array
    echo $json["1"][0];
?>