web-dev-qa-db-fra.com

Imprimer un objet analysé JSON?

J'ai un objet javascript qui a été analysé par JSON à l'aide de JSON.parse Je souhaite maintenant imprimer l'objet pour pouvoir le déboguer (quelque chose ne va pas avec la fonction). Quand je fais ce qui suit ...

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

Je reçois la liste de plusieurs [objet objet]. Je me demande comment puis-je imprimer ceci afin de voir le contenu?

167
Skizit

La plupart des consoles de débogage prennent en charge l'affichage direct des objets. Juste utiliser

console.log(obj);

En fonction de votre débogueur, cela affichera probablement l'objet dans la console sous forme d'arborescence réduite. Vous pouvez ouvrir l'arborescence et inspecter l'objet.

104
RoToRa

Vous savez ce que JSON représente? JavaScript Object Notation . C'est un très bon format pour les objets. 

JSON.stringify(obj) vous retournera une représentation sous forme de chaîne de l'objet.

496
cHao

essayez console.dir() au lieu de console.log()

console.dir(obj);

MDN dit que console.dir() est soutenu par:

  • FF8 +
  • IE9 +
  • Opéra
  • Chrome
  • Safari
48
Distdev

Utilisez des formats de chaîne;

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

Chrome a Spécificateurs de format avec les éléments suivants:

  • %s Formate la valeur en tant que chaîne. 
  • %d ou %i Formate la valeur sous la formeun entier. 
  • %f Formate la valeur en tant que valeur à virgule flottante.
  • %o Formate la valeur en tant qu'élément DOM extensible (comme dans le panneau Éléments). 
  • %O Formate la valeur en tant qu'objet JavaScript extensible. 
  • %c Formate la chaîne de sortie en fonction des styles CSS que vous fournissez

Firefox a également String Substitions qui ont des options similaires.

  • %o Affiche un lien hypertexte vers un objet JavaScript. En cliquant sur le lien, un inspecteur s'ouvre.
  • %d ou %i Affiche un entier. Le formatage n'est pas encore pris en charge.
  • %s Affiche une chaîne.
  • %f Affiche une valeur en virgule flottante. Le formatage n'est pas encore pris en charge.

Safari a les formateurs de style printf

  • %d ou %i entier
  • %[0.N]f Valeur en virgule flottante avec N chiffres de précision
  • %o objet
  • %s chaîne
19
Dave Anderson

Le code suivant affichera les données JSON complètes dans la zone d’alerte

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

Fonction simple pour alerter le contenu d'un objet ou d'un tableau.
Appelez cette fonction avec un tableau, une chaîne ou un objet pour en alerter le contenu.

Une fonction

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);
    }
}

Usage

var data = [1, 2, 3, 4];
print_r(data);
2
Rayiez

Juste utiliser

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

et vous obtiendrez ceci en console chrome: 

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
2
diego matos - keke

Si vous voulez déboguer, pourquoi ne pas utiliser le débogage de la console

window.console.debug(jsonObject);
1
Ruwantha

Sympa et simple:

console.log("object: %O", obj)
1
mbenhalima

Si vous travaillez en js sur un serveur, un peu plus de gymnastique va un long chemin ... Voici mon ppos (pretty-print-on-server):

ppos = (object, space = 2) => JSON.stringify(object, null, space).split('\n').forEach(s => console.log(s));

qui fait un travail extraordinaire pour créer quelque chose que je peux réellement lire lorsque je suis en train d'écrire du code serveur.

0