Estoy creando un script PHP que alimenta datos JSON a otro script. Mi script crea datos en una gran matriz asociativa y luego genera los datos usando json_encode
. Aquí hay un script de ejemplo:
$data = array('a' => 'apple', 'b' => 'banana', 'c' => 'catnip');
header('Content-type: text/javascript');
echo json_encode($data);
El código anterior produce el siguiente resultado:
{"a":"apple","b":"banana","c":"catnip"}
Esto es genial si tiene una pequeña cantidad de datos, pero preferiría algo en este sentido:
{
"a": "apple",
"b": "banana",
"c": "catnip"
}
¿Hay alguna manera de hacer esto en PHP sin un truco feo? Parece que alguien en Facebook lo descubrió.
php
json
pretty-print
Zach Rattner
fuente
fuente
up_json_encode($data, JSON_PRETTY_PRINT);
Content-Type: application/json
encabezado Firefox mostrará el resultado usando su propio analizador JSON interno, mientras que Chrome muestra el texto sin formato. +1 Firefox!Respuestas:
PHP 5.4 ofrece la
JSON_PRETTY_PRINT
opción de usar con lajson_encode()
llamada.http://php.net/manual/en/function.json-encode.php
fuente
Content-Type
aapplication/json
si desea que el navegador para visualizar JSON bastante bien impresa.<pre>
etiqueta como<?php ... $json_string = json_encode($data, JSON_PRETTY_PRINT); echo "<pre>".$json_string."<pre>";
Esta función tomará una cadena JSON y la sangrará de forma muy legible. También debería ser convergente,
Entrada
Salida
Código
fuente
Muchos usuarios sugirieron que usaras
Lo cual es absolutamente correcto. Pero no es suficiente, el navegador necesita comprender el tipo de datos, puede especificar el encabezado justo antes de hacer eco de los datos al usuario.
Esto dará como resultado una salida bien formateada.
O, si le gustan las extensiones, puede usar JSONView para Chrome.
fuente
Tuve el mismo problema.
De todos modos, acabo de usar el código de formato json aquí:
http://recursive-design.com/blog/2008/03/11/format-json-with-php/
Funciona bien para lo que lo necesitaba.
Y una versión más mantenida: https://github.com/GerHobbelt/nicejson-php
fuente
Me doy cuenta de que esta pregunta es sobre cómo codificar una matriz asociativa en una cadena JSON con un formato bonito, por lo que esto no responde directamente a la pregunta, pero si tiene una cadena que ya está en formato JSON, puede hacerlo bastante simple decodificándolo y volviéndolo a codificar (requiere PHP> = 5.4):
Ejemplo:
Esto produce:
fuente
Pegar varias respuestas juntas se ajusta a mi necesidad de json existente:
fuente
function json_print($json) { return '<pre>' . json_encode(json_decode($json), JSON_PRETTY_PRINT) . '</pre>'; }
Tomé el código de Composer: https://github.com/composer/composer/blob/master/src/Composer/Json/JsonFile.php y nicejson: https://github.com/GerHobbelt/nicejson-php/blob /master/nicejson.php El código del compositor es bueno porque se actualiza con fluidez de 5.3 a 5.4 pero solo codifica objetos, mientras que nicejson toma cadenas json, así que las fusioné. El código se puede usar para formatear cadenas json y / o codificar objetos, actualmente lo estoy usando en un módulo Drupal.
fuente
Si está en Firefox, instale JSONovich . No conozco realmente una solución PHP, pero sirve para propósitos de desarrollo / depuración.
fuente
He usado esto:
O use encabezados php como a continuación:
fuente
Manera simple para php> 5.4: me gusta en el gráfico de Facebook
Resultado en el navegador
fuente
Usar
<pre>
en combinación conjson_encode()
y laJSON_PRETTY_PRINT
opción:fuente
Si tiene JSON existente (
$ugly_json
)fuente
Tener salida completa de color: solución pequeña
Código:
fuente
Puede modificar un poco la respuesta de Kendall Hopkins en la declaración de cambio para obtener una impresión bastante limpia y agradablemente sangrada pasando una cadena json en lo siguiente:
}
Ahora solo ejecute la función prettyPrint ($ your_json_string); en línea en su php y disfrute de la impresión. Si eres minimalista y, por algún motivo, no te gustan los corchetes, puedes deshacerte de ellos fácilmente reemplazándolos
$char.="<br>";
con$char="<br>";
en los tres casos principales de cambio en $ char. Esto es lo que obtienes por una llamada a la API de Google Maps para la ciudad de Calgaryfuente
Podrías hacerlo como a continuación.
Lo anterior generaría una especie de me gusta en Facebook.
fuente
a_val
es una matriz o un objeto?Caso clásico para una solución recursiva. Aquí está el mío:
Uso:
Salud
fuente
Esta solución hace que JSON sea 'realmente bonito'. No es exactamente lo que pedía el OP, pero le permite visualizar mejor el JSON.
}
fuente
Si solo usó
$json_string = json_encode($data, JSON_PRETTY_PRINT);
, obtendrá en el navegador algo como esto (usando el enlace de Facebook de la pregunta :)):pero si usó una extensión de Chrome como JSONView (incluso sin la opción de PHP anterior), obtendrá una solución depurable más legible donde incluso puede plegar / contraer cada objeto JSON fácilmente de esta manera:
fuente
print_r bonita impresión para PHP
PHP de ejemplo
fuente
1:
json_encode($rows,JSON_PRETTY_PRINT);
devuelve datos prettificados con caracteres de nueva línea. Esto es útil para la entrada de línea de comandos, pero como has descubierto, no se ve tan bonito dentro del navegador. El navegador aceptará las nuevas líneas como la fuente (y, por lo tanto, ver la fuente de la página mostrará el bonito JSON), pero no se utilizan para formatear la salida en los navegadores. Los navegadores requieren HTML.2 - usa este github de fuction
fuente
Lo siguiente es lo que funcionó para mí:
Contenido de test.php:
salida:
También tenga en cuenta el uso de la etiqueta "pre" en html.
Espero que ayude a alguien
fuente
¡La mejor manera de formatear datos JSON es así!
Reemplace $ response con sus datos, que se deben convertir a JSON
fuente
Para aquellos que ejecutan PHP versión 5.3 o anterior, puede probar a continuación:
fuente
Si estás trabajando con MVC
intenta hacer esto en tu controlador
entonces si llamas / getLatestUsers obtendrás una salida JSON bonita;)
fuente