JSON de impresión bonita usando JavaScript
¿Cómo puedo mostrar JSON en un formato fácil de leer (para lectores humanos)? Estoy buscando principalmente sangría y espacios en blanco, quizás incluso colores/estilos de fuente/etc.
Pretty-printing se implementa de forma nativa enJSON.stringify()
. El tercer argumento permite una impresión bonita y establece el espaciado a utilizar:
var str = JSON.stringify(obj, null, 2); // spacing level = 2
Si necesita resaltado de sintaxis, puede usar algo de magia de expresiones regulares como esta:
function syntaxHighlight(json) {
if (typeof json != 'string') {
json = JSON.stringify(json, undefined, 2);
}
json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) {
var cls = 'number';
if (/^"/.test(match)) {
if (/:$/.test(match)) {
cls = 'key';
} else {
cls = 'string';
}
} else if (/true|false/.test(match)) {
cls = 'boolean';
} else if (/null/.test(match)) {
cls = 'null';
}
return '<span class="' + cls + '">' + match + '</span>';
});
}
Ver en acción aquí: jsfiddle
O un fragmento completo proporcionado a continuación:
Mostrar fragmento de código
La respuesta del usuario Pumbaa80 es excelente si tienes un objeto que quieres imprimir bonito. Si está comenzando con una cadena JSON válida que desea imprimir correctamente, primero debe convertirla en un objeto:
var jsonString = '{"some":"json"}';
var jsonPretty = JSON.stringify(JSON.parse(jsonString),null,2);
Esto crea un objeto JSON a partir de la cadena y luego lo convierte nuevamente en una cadena usando la bonita impresión de JSON stringify.
Mejor manera.
Prettify JSON Array en Javascript
JSON.stringify(jsonobj,null,'\t')