У меня есть текстовый файл с рядом записей JSON. Есть простой способ, используя PHP для декодирования записей. Пример:Декодирование нескольких записей JSON
{
'id':1
}
{
'id':2
}
У меня есть текстовый файл с рядом записей JSON. Есть простой способ, используя PHP для декодирования записей. Пример:Декодирование нескольких записей JSON
{
'id':1
}
{
'id':2
}
Если есть только одна пустая строка между каждым 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
}
Когда вы получаете некоторые действительные данные 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';
}
?>
Есть ли пустые строки между jsons? – splash58
Да, существуют пустые строки между отдельными записями JSON – EastsideDeveloper
Действительные JSON использует кавычки, а не одинарные кавычки. Помните об этом, пытаясь использовать 'json_decode'. – vsharper