我有一个包含许多JSON记录的文本文件。有一种简单的方法,使用PHP来解码记录。例如:
{
'id':1
}
{
'id':2
}
答案 0 :(得分:3)
如果每个JSON数据块之间只有只有一个空行,则下一个代码可以工作,它处理每行文件,如果读取空行,则一个JSON数据块已经完成并显示,然后继续其余部分:
<?php
$arr = file( "data.json" ); // READ WHOLE FILE AS ARRAY OF STRINGS.
$block = ""; // STORE ONE "BLOCK" OF JSON DATA.
foreach ( $arr as $line ) // PROCESS EACH LINE IN FILE.
{ if ( strlen( $line ) > 2 ) // IF LINE CONTAINS MORE THAN LINEBREAK.
$block .= $line; // STORE LINE.
else { // EMPTY LINE FOUND (LINE WITH LINEBREAK ONLY, 0D,OA).
$json = json_decode( $block );
print_r( $json );
echo "<br/><br/>";
$block = ""; // CLEAR BUFFER FOR NEXT BLOCK OF JSON DATA.
}
}
// PRINT LAST BLOCK OF JSON DATA.
$json = json_decode( $block );
print_r( $json );
?>
使用此文件进行测试:
{
"id":1
}
{
"id":2
}
{
"id":3
}
答案 1 :(得分:2)
当你在那里获得一些有效的json数据时,你可以执行以下操作
<?php
$data = rtrim(ltrim(file_get_contents('file.json')));
$json_objs = explode("\n",$data);
if(count($json_objs)){
foreach($json_objs as $json_obj){
//do something
}
}else{
echo 'No json objects found in file';
}
?>