我有以下文件:
data.txt中
{name:yekky}{name:mussie}{name:jessecasicas}
我是PHP的新手。你知道如何使用PHP解码上面的JSON吗?
我的PHP代码
var_dump(json_decode('data.txt', true));// var_dump value null
foreach ($data->name as $result) {
echo $result.'<br />';
}
答案 0 :(得分:22)
json_decode将字符串作为参数。使用file_get_contents
$json_data = file_get_contents('data.txt');
json_decode($json_data, true);
您需要通过在字符串周围添加引号,在对象之间添加逗号以及将对象放在包含的数组(或对象)中来将示例字符串调整为有效的JSON。
[{"name":"yekky"}, {"name":"mussie"}, {"name":"jessecasicas"}]
答案 1 :(得分:3)
正如我在your other question中提到的那样,你没有生成有效的JSON。请参阅我的答案,了解如何创建它。这将导致像
这样的东西[{"name":"yekky"},{"name":"mussie"},{"name":"jessecasicas"}]
(我不知道,你的引号消失了,但json_encode()
通常会产生有效的json)
这很容易阅读
$data = json_decode(file_get_contents('data.txt'), true);
答案 2 :(得分:1)
您的JSON数据无效。你有多个对象(并且你缺少引号),在你提供给json_decode
之前,你需要一些方法将它们分开。
答案 3 :(得分:1)
$data = json_decode(file_get_contents('data.txt'), true);
但是你的JSON需要正确格式化:
[ {"name":"yekky"}, ... ]
答案 4 :(得分:1)
根据JSONLint,这不是有效的JSON文件。如果是的话,你必须先阅读它:
$jsonBytes = file_get_contents('data.json');
$data = json_decode($jsonBytes, true);
/* Do something with data.
If you set the second argument of json_decode (as above), it's an array,
otherwise an object.
*/
答案 5 :(得分:0)
你必须阅读文件!
$json = file_get_contents('data.txt');
var_dump(json_decode($json, true));