Imprimir objeto analizado JSON?


Tengo un objeto javascript que ha sido analizado JSON usando JSON.parse Ahora quiero imprimir el objeto para poder depurarlo (algo va mal con la función). Cuando hago lo siguiente...

for (property in obj) {
    output += property + ': ' + obj[property]+'; ';
}
console.log(output);

Obtengo múltiples [object Object] listados. Me pregunto cómo imprimiría esto para ver el contenido.

Author: olibre, 2011-02-08

10 answers

La mayoría de las consolas de depuración soportan mostrar objetos directamente. Solo use

console.log(obj);

Dependiendo de su depurador, lo más probable es que muestre el objeto en la consola como un árbol colapsado. Puede abrir el árbol e inspeccionar el objeto.

 97
Author: RoToRa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-08 12:50:59

¿Sabes lo que significa JSON? Notación de objetos JavaScript . Hace un formato bastante bueno para los objetos.

JSON.stringify(obj) le devolverá una representación de cadena del objeto.

 477
Author: cHao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-08 12:56:25

Intenta console.dir() en lugar de console.log()

console.dir(obj);

MDN dice console.dir() es compatible con:

  • FF8 +
  • IE9 +
  • Opera
  • Cromo
  • Safari
 48
Author: Distdev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-14 13:56:08

Si desea un JSON bastante multilínea con sangría, puede usar JSON.stringify con su 3er argumento:

JSON.stringify(value[, replacer[, space]])

Por ejemplo:

var obj = {a:1,b:2,c:{d:3, e:4}};

JSON.stringify(obj, null, "    ");

O

JSON.stringify(obj, null, 4);

Te dará el siguiente resultado:

"{
    "a": 1,
    "b": 2,
    "c": {
        "d": 3,
        "e": 4
    }
}"

En un navegador console.log(obj) hace un trabajo aún mejor, pero en una consola de shell (node.js) no lo hace.

 34
Author: Lukasz Wiktor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-06 15:05:21

Para imprimir un objeto analizado JSON simplemente escriba

console.log( JSON.stringify(data, null, " ") );

y obtendrá una salida muy clara

 26
Author: BERGUIGA Mohamed Amine,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-11 10:23:37

Usar formatos de cadena;

console.log("%s %O", "My Object", obj);

Chrome tiene Especificadores de formato con lo siguiente;

  • %s Formatea el valor como una cadena.
  • %d o %i Formatea el valor como entero.
  • %f Formatea el valor como un valor en coma flotante.
  • %o Formatea el valor como un elemento DOM ampliable (como en el Panel de elementos).
  • %O Formatea el valor como un JavaScript expandible objeto.
  • %c Formatea el cadena de salida de acuerdo con los estilos CSS que proporcionar.

Firefox también tiene Sustituciones de cadena que tienen opciones similares.

  • %o Muestra un hipervínculo a un objeto JavaScript. Al hacer clic en el enlace se abre un inspector.
  • %d o %i Muestra un entero. El formato aún no es compatible.
  • %s Muestra una cadena.
  • %f Muestra un valor de coma flotante. El formato aún no es compatible.

Safari tiene formateadores de estilo printf

  • %d o%i Entero
  • %[0.N]f Valor de coma flotante con N dígitos de precisión
  • %o Objeto
  • %s String
 19
Author: Dave Anderson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-26 22:54:24

Solo use

console.info("CONSOLE LOG : ")
console.log(response);
console.info("CONSOLE DIR : ")
console.dir(response);

Y obtendrás esto en chrome console:

CONSOLE LOG : 
facebookSDK_JS.html:56 Object {name: "Diego Matos", id: "10155988777540434"}
facebookSDK_JS.html:57 CONSOLE DIR : 
facebookSDK_JS.html:58 Objectid: "10155988777540434"name: "Diego Matos"__proto__: Object
 3
Author: diego matos - keke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-26 22:35:57

Función simple para alertar el contenido de un objeto o una matriz .
Llame a esta función con una matriz o cadena o un objeto que alerta el contenido.

Function

function print_r(printthis, returnoutput) {
    var output = '';

    if($.isArray(printthis) || typeof(printthis) == 'object') {
        for(var i in printthis) {
            output += i + ' : ' + print_r(printthis[i], true) + '\n';
        }
    }else {
        output += printthis;
    }
    if(returnoutput && returnoutput == true) {
        return output;
    }else {
        alert(output);
    }
}

Uso

var data = [1, 2, 3, 4];
print_r(data);
 2
Author: Rayiez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-07 13:36:18

El siguiente código mostrará los datos json completos en el cuadro de alerta

var data= '{"employees":[' +
'{"firstName":"John","lastName":"Doe" },' +
'{"firstName":"Anna","lastName":"Smith" },' +
'{"firstName":"Peter","lastName":"Jones" }]}';

json = JSON.parse(data);
window.alert(JSON.stringify(json));
 2
Author: Kiran Kumar Kotari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-26 18:30:54

Si desea depurar, por qué no usar console debug

window.console.debug(jsonObject);
 2
Author: Ruwantha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-11 08:57:10