去除JSON文件中的重复内容


Get rid of duplicate content in JSON file?

我不小心用fopen("folder/".$filename.".json", "a");把几个(相同的!)json文件附加到了一个json文件中。真是一团糟。。有人知道"清理"这些文件并消除重复内容的解决方案吗?

现在,我的每个json文件看起来都类似于此(不过没有换行符):

{"next_cursor":0,"next_cursor_str":"0","previous_cursor":0,
"previous_cursor_str":"0","lists":[{"id":...
...
}]}
{"next_cursor":0,"next_cursor_str":"0","previous_cursor":0,
"previous_cursor_str":"0","lists":[{"id":...
...
}]} 
{"next_cursor":0,"next_cursor_str":"0","previous_cursor":0,
"previous_cursor_str":"0","lists":[{"id":...
...
}]} 
etc.

事实上,每个文件中的结构总是相同的。每个区块以{"next_cursor":... 开始

有人知道如何解决这个问题吗(最好是用PHP)?

谢谢!

您可以开始逐字符读取文件,并使用json_decode解析读取到的字符串,如果它返回的值不同于NULL,则您可以使用有效的json来覆盖文件内容。

foreach ( $files as $file ) {
    $fp = fopen( $file, 'r');
    $content = '';
    while ( !feof($fp) ) {
       $content .= fread( $fp, 1 );
       if ( json_decode($content) !== null ) {
         fclose($fp);
         file_put_contents( $file, $content );
         break;
       }
    }
}