it-roy-ru.com

PHP "красивая печать" json_encode

Возможный дубликат:
Pretty-Printing JSON с PHP

Я работаю над сценарием, который создает файл 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, и то же самое для скобок ... Мысли?

131
Brian

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, чтобы сохранить форматирование;)

310
petrkotek

Хммм $array = json_decode($json, true); сделает вашу строку массивом, который легко распечатать с print_r($array, true);

Но если вы действительно хотите улучшить свой JSON ... Проверьте это

11
sg3s

Вот функция для улучшения вашего json: pretty_json

4
Cam Tullos

А для PHP 5.3 вы можете использовать эту функцию, которую можно встроить в класс или использовать в процедурном стиле:

http://svn.kd2.org/svn/misc/libs/tools/json_readable_encode.php

3
bohwaz