2015-05-08 4 views
0

Я хочу создать один json-файл с массивами, закодированными как json line by line. Так это будет выглядеть примерно так:Создание файла multiroot json

{...valid json 1...} 
{...valid json 2...} 

Но когда я использую простой fwirte с «/ п» флагом, чтобы сделать это, я получаю неожиданное EOF в первой строке файла JSON. Как я не мог создать jsons один за другим в файле, который имеет расширение .json.

Неправильно, и как я могу исправить это?

EDIT. Пример кода, который я использую:

$file = fopen("output.json", "w"); 

$arr = ['a', 'b']; 

fwrite($file, json_encode($arr), "\n"); 

fclose($file); 
+0

Пожалуйста опубликовать некоторые кода для писать и читать файл. – cyfur01

+0

Несомненно, сделано! ;) – khernik

ответ

2

в соответствии с инструкцией, fwrite действительно принимает три аргумента:

resource $handle 
string $string 
int $length (optional) 

Таким образом, вы должны сделать следующее:

$file = fopen("output.json", "w"); 

$arr = ['a', 'b']; 

fwrite($file, json_encode($arr) . "\n"); 

fclose($file); 

Примечание что оператор конкатенации строк равен . (просто точка)

+0

Пробовал, конечно, но он отображает ту же ошибку. – khernik

+1

Когда возникает ошибка и какая ошибка? Если это код, который вы еще не опубликовали, напишите больше кода. – Atmocreations

+0

Нет, ошибка возникает непосредственно в json-файле. – khernik

1

Добавление в ответ @Atmoscreations:

Ваш выходной формат технически недействителен JSON. Если вы хотите сохранить список значений/объектов, вы должны инкапсулировать все в списке JSON:

[  
    {...valid json 1...}, 
    {...valid json 2...}, 
    ... 
    {...valid json N...} 
] 

Вы можете сделать это с PHP объектов:

$file = fopen("output.json", "w"); 
$arr = [ 
    ['a', 'b'], 
    ['c', 'd'], 
]; 
fwrite($file, json_encode($arr)); 
fclose($file); 
Смежные вопросы