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?
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.
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.
essayez console.dir()
au lieu de console.log()
console.dir(obj);
MDN dit que console.dir()
est soutenu par:
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îneLe 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));
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);
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
Si vous voulez déboguer, pourquoi ne pas utiliser le débogage de la console
window.console.debug(jsonObject);
Sympa et simple:
console.log("object: %O", obj)
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.