¿Cómo puedo mostrar JSON en un formato fácil de leer (para lectores humanos)? Estoy buscando principalmente sangría y espacios en blanco, tal vez incluso con colores / estilos de fuente / etc.
javascript
json
pretty-print
marca
fuente
fuente
<pre>
etiqueta.Respuestas:
Pretty-printing se implementa de forma nativa en
JSON.stringify()
. El tercer argumento permite una impresión bonita y establece el espacio para usar:Si necesita resaltar la sintaxis, puede usar algo de magia regex así:
Ver en acción aquí: jsfiddle
O un fragmento completo proporcionado a continuación:
Mostrar fragmento de código
fuente
<pre>
.#transactionResponse
elemento tengawhite-space: pre;
un estilo CSS.stringify(...)
funciona en objetos JSON , no en cadenas JSON. Si tiene una cadena,JSON.parse(...)
primero debe hacerloLa respuesta del usuario Pumbaa80 es excelente si tiene un objeto que desea imprimir bastante. Si está comenzando desde una cadena JSON válida que desea imprimir bastante, primero debe convertirla en un objeto:
Esto construye un objeto JSON a partir de la cadena y luego lo convierte de nuevo en una cadena usando la bonita impresión de JSON stringify.
fuente
JSON.parse
así que lo modifiqué para que seaJSON.stringify(jsonString, null, 2)
. Depende de su JSON / Objeto.<pre></pre>
etiquetas.JSON.parse
solo muere si tiene un str JSON no válido o si ya está convertido en un objeto ... asegúrese de saber con qué tipo de datos está tratando antes de intentarloJSON.parse
Mejor manera.
Prettify JSON Array en Javascript
fuente
Basado en la respuesta de Pumbaa80, modifiqué el código para usar los colores de console.log (seguro que funciona en Chrome) y no HTML. La salida se puede ver dentro de la consola. Puede editar las _variables dentro de la función agregando un poco más de estilo.
Aquí hay un marcador que puede usar:
Uso:
Editar: acabo de intentar escapar del símbolo% con esta línea, después de la declaración de variables:
Pero descubro que Chrome no admite el% de escape en la consola. Extraño ... Tal vez esto funcione en el futuro.
¡Salud!
fuente
En caso de mostrar en HTML, debe agregar una baliza
<pre></pre>
Ejemplo:
Mostrar fragmento de código
fuente
<pre>
es una necesidad si usted muestra el JSON en una<div>
. ¡Votado solo por esa pista!Uso la extensión JSONView Chrome (es tan bonita como parece :):
Editar: agregado
jsonreport.js
También he lanzado un visor de impresión bonita JSON independiente en línea, jsonreport.js, que proporciona un informe HTML5 legible por humanos que puede usar para ver cualquier información JSON.
Puede leer más sobre el formato en Nuevo formato de informe HTML5 de JavaScript .
fuente
Puede usar
console.dir()
, que es un atajo paraconsole.log(util.inspect())
. (La única diferencia es que omite cualquierinspect()
función personalizada definida en un objeto).Utiliza resaltado de sintaxis , sangría inteligente , elimina las comillas de las claves y simplemente hace que la salida sea lo más bonita posible.
y para la línea de comando:
cat package.json | node -e "process.stdin.pipe(new stream.Writable({write: chunk => console.dir(JSON.parse(chunk), {depth: null, colors: true})}))"
fuente
Aquí está el impresionante HTML de user123444555621 adaptado para terminales. Práctico para depurar scripts de nodo:
Uso:
fuente
Para fines de depuración, uso:
fuente
console.debug(data);
en (al menos) Chrome y Firefox. No muestra una representación JSON dedata
, y mucho menos una bonita impresión.console.debug("%s: %o x %d", str, data, cnt);
puede ser útil para alguien.console.dir
que permite navegar por los datos.Insatisfecho con otras impresoras bonitas para Ruby, escribí el mío ( NeatJSON ) y luego lo porté a JavaScript, incluido un formateador en línea gratuito . El código es gratuito bajo licencia MIT (bastante permisivo).
Características (todas opcionales):
Copiaré el código fuente aquí para que este no sea solo un enlace a una biblioteca, sino que lo aliento a que vaya a la página del proyecto GitHub , ya que se mantendrá actualizado y el código a continuación no lo hará.
fuente
¡Muchas gracias a todos! Basado en las respuestas anteriores, aquí hay otro método variante que proporciona reglas de reemplazo personalizadas como parámetro:
fuente
Funciona bien:
Lea más aquí: https://developer.mozilla.org/pt-BR/docs/Web/API/Console/table
fuente
La biblioteca JSON en JavaScript de Douglas Crockford imprimirá bastante JSON a través del método stringify.
También puede encontrar útiles las respuestas a esta pregunta anterior: ¿Cómo puedo imprimir JSON en script de shell (unix)?
fuente
Me encontré con un problema hoy con el código de @ Pumbaa80. Estoy tratando de aplicar el resaltado de sintaxis JSON a los datos que estoy procesando en una vista Mithril , por lo que necesito crear nodos DOM para todo lo que aparece en la
JSON.stringify
salida.Dividí la expresión regular realmente larga en sus partes componentes también.
Código en contexto en Github aquí
fuente
Aquí hay un simple formato JSON / componente de color escrito en React:
Véalo trabajando en este CodePen: https://codepen.io/benshope/pen/BxVpjo
¡Espero que ayude!
fuente
Puede usar
JSON.stringify(your object, null, 2)
El segundo parámetro puede usarse como una función de reemplazo que toma la clave y Val como parámetros. Esto puede usarse en caso de que desee modificar algo dentro de su objeto JSON.Más referencia: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
fuente
Si necesita que esto funcione en un área de texto, la solución aceptada no funcionará.
<textarea id='textarea'></textarea>
$("#textarea").append(formatJSON(JSON.stringify(jsonobject),true));
fuente
Si está buscando una buena biblioteca para embellecer json en una página web ...
Prism.js es bastante bueno.
http://prismjs.com/
Encontré que usar JSON.stringify (obj, undefined, 2) para obtener la sangría, y luego usar prisma para agregar un tema fue un buen enfoque.
Si está cargando en JSON a través de una llamada ajax, puede ejecutar uno de los métodos de utilidad de Prism para embellecer
Por ejemplo:
fuente
Esto es bonito:
https://github.com/mafintosh/json-markup de
mafintosh
HTML
Ejemplo de hoja de estilo se puede encontrar aquí
fuente
No se pudo encontrar ninguna solución que tuviera un buen resaltado de sintaxis para la consola, así que aquí está mi 2p
Instalar y agregar dependencia de cli-highlight
Definir logjson globalmente
Utilizar
fuente
Aquí es cómo puede imprimir sin usar la función nativa.
fuente
La forma más sencilla de mostrar un objeto con fines de depuración:
Si desea mostrar el objeto en el DOM, debe tener en cuenta que podría contener cadenas que se interpretarían como HTML. Por lo tanto, debes escapar un poco ...
fuente
fuente
Para resaltarlo y embellecerlo
HTML
usandoBootstrap
:fuente
Recomiendo usar HighlightJS . Utiliza el mismo principio que la respuesta aceptada, pero funciona también para muchos otros idiomas y tiene muchos esquemas de color predefinidos . Si usa RequireJS , puede generar un módulo compatible con
La generación se basa en Python3 y Java. Agregar
-n
para generar una versión no minificada.fuente