Подтвердить что ты не робот

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, а также для скобок... Мысли?

4b9b3361

Ответ 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