JSON de impresión bonita usando JavaScript

Resuelto Mark asked hace 13 años • 32 respuestas

¿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.

Mark avatar Jan 27 '11 05:01 Mark
Aceptado

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, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
    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

user123444555621 avatar Aug 28 '2011 10:08 user123444555621

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.

Rick Hanlon II avatar Jun 21 '2013 20:06 Rick Hanlon II

Mejor manera.

Prettify JSON Array en Javascript

JSON.stringify(jsonobj,null,'\t')
Charmie avatar Oct 21 '2017 10:10 Charmie