PHP "pretty print" json_encode
Возможный дубликат:
Pretty-Printing JSON с PHP
Я работаю над script, который создает файл JSON. Прямо сейчас я просто использую json_encode
(PHP 5.2.x) для кодирования массива в вывод JSON. Затем я печатаю возвращаемое значение в файл и сохраняю его. Проблема в том, что клиент хочет открыть эти JSON файлы для удобочитаемости, поэтому я хотел бы добавить разрывы строк и "довольно печатать" вывод JSON. Есть идеи, как это сделать? Моя единственная альтернатива, которую я вижу, - вообще не использовать json_encode
и просто писать содержимое файла вручную и добавлять в свои собственные разрывы строк для каждой строки.
Вот что я получаю:
{"product_name":"prod1","val1":1,"val2":8}
Вот что я хочу:
{
"product_name":"prod1",
"val1":1,
"val2":8
}
Я полагаю, что я мог бы просто заменить каждую запятую командой, за которой следует \n, а также для скобок... Мысли?
Ответы
Ответ 1
PHP имеет опцию JSON_PRETTY_PRINT начиная с 5.4.0 (дата выпуска 01-Mar-2012).
Это должно сделать работу:
$json = json_decode($string);
echo json_encode($json, JSON_PRETTY_PRINT);
См. Http://www.php.net/manual/en/function.json-encode.php
Примечание: не забудьте повторить "<pre>" до и "</pre>" после, если вы печатаете его в HTML для сохранения форматирования;)
Ответ 2
Hmmm $array = json_decode($json, true);
сделает вашу строку массив, который легко печатать с помощью print_r($array, true);
Но если вы действительно хотите превзойти свой json... Проверьте это
Ответ 3
Здесь вы можете использовать json:
pretty_json
Ответ 4
И для PHP 5.3 вы можете использовать эту функцию, которая может быть встроена в класс или использована в процедурном стиле:
http://svn.kd2.org/svn/misc/libs/tools/json_readable_encode.php