Existe-t-il une fonction rapide pour convertir les objets JSON reçus via jQuery getJSON
à un vidage de variable de chaîne (à des fins de traçage/débogage)?
Oui, JSON.stringify
, peut être trouvé ici , c'est inclus dans Firefox 3.5.4 et supérieur.
Un stringifier JSON va dans le sens opposé, convertissant les structures de données JavaScript en texte JSON. JSON ne supportant pas les structures de données cycliques, veillez donc à ne pas donner de structures cycliques au stringificateur JSON. https://web.archive.org/web/20100611210643/http: //www.json.org/js.html
var myJSONText = JSON.stringify(myObject, replacer);
Vous pouvez utiliser console.log()
dans Firebug ou Chrome pour obtenir une bonne vue d'objet ici, comme ceci:
$.getJSON('my.json', function(data) {
console.log(data);
});
Si vous voulez juste voir la chaîne, regardez le vue Ressource dans Chrome ou le vue Net) Firebug pour voir la réponse sous forme de chaîne du serveur (inutile de la convertir ... vous l'avez reçue de cette façon).
Si vous voulez prendre cette chaîne et la décomposer pour en faciliter la visualisation, il existe un excellent outil ici: http://json.parser.online.fr/
personnellement, j'utilise le plugin jquery dump beaucoup pour dump des objets, c'est un peu similaire à la fonction print_r () de php
var obj = {
hubba: "Some string...",
bubba: 12.5,
dubba: ["One", "Two", "Three"]
}
$("#dump").append($.dump(obj));
/* will return:
Object {
hubba: "Some string..."
bubba: 12.5
dubba: Array (
0 => "One"
1 => "Two"
2 => "Three"
)
}
*/
Son très lisible, je recommande également ce site http://json.parser.online.fr/ pour la création/analyse/lecture JSON, car il a de belles couleurs
Voici le code que j'utilise. Vous devriez être capable de l'adapter à vos besoins.
function process_test_json() {
var jsonDataArr = { "Errors":[],"Success":true,"Data":{"step0":{"collectionNameStr":"dei_ideas_org_Private","url_root":"http:\/\/192.168.1.128:8500\/dei-ideas_org\/","collectionPathStr":"C:\\ColdFusion8\\wwwroot\\dei-ideas_org\\wwwrootchapter0-2\\verity_collections\\","writeVerityLastFileNameStr":"C:\\ColdFusion8\\wwwroot\\dei-ideas_org\\wwwroot\\chapter0-2\\VerityLastFileName.txt","doneFlag":false,"state_dbrec":{},"errorMsgStr":"","fileroot":"C:\\ColdFusion8\\wwwroot\\dei-ideas_org\\wwwroot"}}};
var htmlStr= "<h3 class='recurse_title'>[jsonDataArr] struct is</h3> " + recurse( jsonDataArr );
alert( htmlStr );
$( document.createElement('div') ).attr( "class", "main_div").html( htmlStr ).appendTo('div#out');
$("div#outAsHtml").text( $("div#out").html() );
}
function recurse( data ) {
var htmlRetStr = "<ul class='recurseObj' >";
for (var key in data) {
if (typeof(data[key])== 'object' && data[key] != null) {
htmlRetStr += "<li class='keyObj' ><strong>" + key + ":</strong><ul class='recurseSubObj' >";
htmlRetStr += recurse( data[key] );
htmlRetStr += '</ul ></li >';
} else {
htmlRetStr += ("<li class='keyStr' ><strong>" + key + ': </strong>"' + data[key] + '"</li >' );
}
};
htmlRetStr += '</ul >';
return( htmlRetStr );
}
</script>
</head><body>
<button onclick="process_test_json()" >Run process_test_json()</button>
<div id="out"></div>
<div id="outAsHtml"></div>
</body>
quelque chose le long de cela?
function dump(x, indent) {
var indent = indent || '';
var s = '';
if (Array.isArray(x)) {
s += '[';
for (var i=0; i<x.length; i++) {
s += dump(x[i], indent)
if (i < x.length-1) s += ', ';
}
s +=']';
} else if (x === null) {
s = 'NULL';
} else switch(typeof x) {
case 'undefined':
s += 'UNDEFINED';
break;
case 'object':
s += "{ ";
var first = true;
for (var p in x) {
if (!first) s += indent + ' ';
s += p + ': ';
s += dump(x[p], indent + ' ');
s += "\n"
first = false;
}
s += '}';
break;
case 'boolean':
s += (x) ? 'TRUE' : 'FALSE';
break;
case 'number':
s += x;
break;
case 'string':
s += '"' + x + '"';
break;
case 'function':
s += '<FUNCTION>';
break;
default:
s += x;
break;
}
return s;
}