解码多个JSON记录

时间:2016-06-10 18:32:35

标签: php

我有一个包含许多JSON记录的文本文件。有一种简单的方法,使用PHP来解码记录。例如:

{
   'id':1
}

{
   'id':2
}

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';
        }
  ?>
相关问题