如何将JSON文本转换为PHP关联数组

7
我有一个JSON对象存储在一个文本文件(data.txt)中,内容如下:
{"player":"black","time":"0","from":"2c","to":"3d"}

我使用 PHP 读取的内容是:
<?php
  $data = file_get_contents('data.txt');
?>

问题:有没有一种简单的方法将$data转换为PHP关联数组。我尝试使用json_decode($data); 但是没有成功,有什么建议吗?

4
为什么 json_decode($data) 没有起作用? - Pekka
因为JSON来自文本文件,而PHP将其读取为字符串。 - Q_Mlilo
您可能需要将字符串编码为JSON格式,然后放入数组中。 - benhowdle89
3
JSON 等同于字符串。如果你的文本文件包含以上所发布的字符串,它应该可以被正常解析为 JSON 格式。 - deceze
3个回答

32
$assocArray = json_decode($data, true);

第二个参数设置结果为对象(false, 默认)还是关联数组(true)。


1
确保不要混淆单引号和双引号: //有效的JSON: $string = '{"foo": "bar", "cool": "attr"}';//无效的JSON: $string = "{'foo': 'bar', 'cool': 'attr'}";参见:http://www.json.org/ - user1491819

3

0
你可以使用这个函数在PHP中将JSON转换为数组,还可以验证提供的字符串是否是有效的JSON:
function convert_to_json($file, $in_array = True) {
    if(file_exists($file)) {
        $string = file_get_contents($file);
    }else {
        $string = $file;
    }

    $return_array = json_decode($string, $in_array);
    if (json_last_error() == JSON_ERROR_NONE) {
        return $return_array;
    }

    return False;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接