我有包含多个json对象的json文件。 实施例
{"t":"abc-1","d":"2017-12-29 12:42:53"}
{"t":"abc-2","d":"2017-12-29 12:43:05"}
{"t":"abc-3","d":"2017-12-30 14:42:09"}
{"t":"code-4","d":"2017-12-30 14:42:20"}
想要读取此文件并存储到数据库中,但我无法将json转换为php数组,我可以将其存储到数据库中。
我尝试了json_decode函数,但它不起作用。我搜索这个但是在每个链接中它显示使用json_decode。以下是我的代码
$filename = "folder/filename.json";
$data = file_get_contents($filename);
echo $data;
$tags = json_decode($data, true);
echo"<pre>";print_r($tags);exit;
$ data是回显但不是$ tag。
提前致谢。
答案 0 :(得分:0)
如果只有四行,你可以爆炸并对每行进行json_decode并将其添加到数组中。
$s = '{"t":"abc-1","d":"2017-12-29 12:42:53"}
{"t":"abc-2","d":"2017-12-29 12:43:05"}
{"t":"abc-3","d":"2017-12-30 14:42:09"}
{"t":"code-4","d":"2017-12-30 14:42:20"}';
$arr = explode(PHP_EOL, $s);
Foreach($arr as $line){
$json[] = json_decode($line,true);
}
Var_dump($json);
答案 1 :(得分:0)
一行中的多个对象应该用json数组括起来,并用逗号之类的元素分隔。所以你需要在文件的开头和结尾加一个[]。你也可以关闭预标记
您应该修复生成'json'的文件,或者您可以使用fgets一次获取一行,并在每行使用json decode
答案 2 :(得分:0)
正如其他人指出的那样,您分享的JSON
无效。而且,我认为它以相同的方式存储在您的文件中。我建议逐行读取这个文件然后你可以解码。
$handle = fopen("folder/filename.json", "r");
if ($handle) {
while (($line = fgets($handle)) !== false) {
$tags = json_decode($line, true);
echo"<pre>";print_r($tags);exit;
}
fclose($handle);
} else {
// error opening the file.
}
答案 3 :(得分:0)
VTCompressionSessionEncodeFrame(…)
答案 4 :(得分:0)
答案 5 :(得分:-1)
您的JSON无效,因为它有多个根元素
修复它应该有效(请注意[
,]
和逗号):
[
{"t":"abc-1","d":"2017-12-29 12:42:53"},
{"t":"abc-2","d":"2017-12-29 12:43:05"},
{"t":"abc-3","d":"2017-12-30 14:42:09"},
{"t":"code-4","d":"2017-12-30 14:42:20"}
]
如果无法影响JSON文件的创建方式,则需要创建自己的阅读器,因为PHP不是为支持无效格式而构建的。您可以用新行分隔文件并分别解析每个文件。