Я строю PHP-скрипт, который передает данные JSON в другой скрипт. Мой скрипт строит данные в большой ассоциативный массив, а затем выводит данные, используя json_encode
. Вот пример сценария:
$data = array('a' => 'apple', 'b' => 'banana', 'c' => 'catnip');
header('Content-type: text/javascript');
echo json_encode($data);
Приведенный выше код дает следующий вывод:
{"a":"apple","b":"banana","c":"catnip"}
Это замечательно, если у вас небольшой объем данных, но я бы предпочел что-то вроде этого:
{
"a": "apple",
"b": "banana",
"c": "catnip"
}
Есть ли способ сделать это в PHP без отвратительного взлома? Похоже, кто-то в Facebook понял это.
php
json
pretty-print
Зак Раттнер
источник
источник
up_json_encode($data, JSON_PRETTY_PRINT);
Content-Type: application/json
заголовок, Firefox покажет результат, используя собственный внутренний анализатор JSON, а Chrome показывает простой текст. +1 Firefox!Ответы:
PHP 5.4 предлагает
JSON_PRETTY_PRINT
опцию для использования сjson_encode()
вызовом.http://php.net/manual/en/function.json-encode.php
источник
Content-Type
на ,application/json
если вы хотите браузер для отображения довольно-печатное JSON красиво.<pre>
тег вроде:<?php ... $json_string = json_encode($data, JSON_PRETTY_PRINT); echo "<pre>".$json_string."<pre>";
Эта функция будет принимать строку JSON и делать отступ для очень удобного для чтения. Это также должно быть сходящимся,
вход
Вывод
Код
источник
Многие пользователи предложили вам использовать
Что абсолютно верно. Но этого недостаточно, браузер должен понимать тип данных, вы можете указать заголовок непосредственно перед отправкой данных пользователю.
Это приведет к хорошо отформатированному выводу.
Или, если вам нравятся расширения, вы можете использовать JSONView для Chrome.
источник
Я была такая же проблема.
В любом случае, я просто использовал код форматирования json:
http://recursive-design.com/blog/2008/03/11/format-json-with-php/
Хорошо работает для того, что мне нужно.
И более поддерживаемая версия: https://github.com/GerHobbelt/nicejson-php
источник
Я понимаю, что этот вопрос задает вопрос о том, как кодировать ассоциативный массив в довольно отформатированную строку JSON, так что это не дает прямого ответа на вопрос, но если у вас есть строка в формате JSON, вы можете сделать ее довольно просто путем декодирования и перекодирования (требуется PHP> = 5.4):
Пример:
Это выводит:
источник
Склейка нескольких ответов соответствует моей потребности в существующем json:
источник
function json_print($json) { return '<pre>' . json_encode(json_decode($json), JSON_PRETTY_PRINT) . '</pre>'; }
Я взял код у Composer: https://github.com/composer/composer/blob/master/src/Composer/Json/JsonFile.php и nicejson: https://github.com/GerHobbelt/nicejson-php/blob /master/nicejson.php Код Composer хорош, потому что он свободно обновляется с 5.3 до 5.4, но кодирует только объект, тогда как nicejson принимает строки json, поэтому я объединил их. Код можно использовать для форматирования строки json и / или кодирования объектов, в настоящее время я использую его в модуле Drupal.
источник
Если вы используете Firefox, установите JSONovich . Я знаю, что это не совсем PHP-решение, но оно подходит для целей разработки / отладки.
источник
Я использовал это:
Или используйте заголовки php, как показано ниже:
источник
Простой способ для php> 5.4: как в графике Facebook
Результат в браузере
источник
Используйте
<pre>
в сочетании сjson_encode()
иJSON_PRETTY_PRINT
опцией:источник
Если у вас есть JSON (
$ugly_json
)источник
Полноценный вывод цвета: Tiny Solution
Код:
источник
Вы можете немного изменить ответ Кендалла Хопкинса в операторе switch, чтобы получить довольно чистый и красиво отпечатанный отпечаток, передав строку json в следующее:
}
Теперь просто запустите функцию prettyPrint ($ your_json_string); встроенный в ваш php и наслаждайтесь распечаткой. Если вы минималист и не как скобки для какой - то причины, вы можете избавиться от тех , кто легко путем замены
$char.="<br>";
с$char="<br>";
в верхних трех случаях переключателя на $ полукокса. Вот что вы получаете за вызов API Google Maps для города Калгариисточник
Вы можете сделать это, как показано ниже.
Выше бы выводил вроде как в фейсбуке.
источник
a_val
массив или объект?Классический кейс для рекурсивного решения. Вот мой:
Применение:
ура
источник
Это решение делает JSON действительно красивым. Не совсем то, о чем просил OP, но он позволяет лучше визуализировать JSON.
}
источник
Если вы использовали только
$json_string = json_encode($data, JSON_PRETTY_PRINT);
, вы получите в браузере что-то вроде этого (используя ссылку Facebook из вопроса :)):но если вы использовали расширение Chrome, такое как JSONView (даже без опции PHP выше), то вы получите более удобочитаемое решение для отладки, где вы можете даже легко свернуть / свернуть каждый отдельный объект JSON, например:
источник
print_r довольно печать для PHP
Пример PHP
источник
1 -
json_encode($rows,JSON_PRETTY_PRINT);
возвращает предварительно подтвержденные данные с символами новой строки. Это полезно для ввода в командной строке, но, как вы обнаружили, в браузере выглядит не так красиво. Браузер примет новые строки в качестве источника (и, следовательно, при просмотре исходного кода страницы действительно отобразится симпатичный JSON), но они не используются для форматирования вывода в браузерах. Браузеры требуют HTML.2 - использовать этот fuction github
источник
Вот что сработало для меня:
Содержание test.php:
вывод:
Также обратите внимание на использование тега «pre» в html.
Надеюсь, что это помогает кому-то
источник
лучший способ отформатировать данные в формате JSON:
Замените $ response вашими данными, которые необходимо преобразовать в JSON
источник
Для тех, кто использует PHP версии 5.3 или ранее, вы можете попробовать ниже:
источник
Если вы работаете с MVC
попробуйте сделать это в вашем контроллере
тогда, если вы вызовете / getLatestUsers, вы получите красивый вывод JSON;)
источник