82 votes

vidage de la variable JSON en chaîne

Existe-t-il une fonction rapide permettant de convertir des objets JSON reçus via jQuery getJSON à un vidage de variable de chaîne (à des fins de traçage/débogage) ?

121voto

Anders Points 3568

Oui, JSON.stringify On peut trouver ici c'est inclus dans Firefox 3.5.4 et plus.

Un stringificateur JSON va dans la direction opposée, en convertissant les structures de données JavaScript en texte JSON. JSON ne supporte pas les structures de données cycliques, il faut donc veiller à 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);

29voto

Nick Craver Points 313913

Vous pouvez utiliser console.log() dans Firebug ou Chrome pour obtenir une bonne vue de l'objet ici, comme ceci :

$.getJSON('my.json', function(data) {
  console.log(data);
});

Si vous voulez juste voir la chaîne, regardez le Affichage des ressources dans Chrome ou le Vue du réseau dans Firebug pour voir la réponse réelle du serveur (pas besoin de la convertir... vous l'avez reçue de cette façon).

Si vous voulez prendre cette chaîne et la décomposer pour la visualiser facilement, il y a un excellent outil ici : http://json.parser.online.fr/

13voto

Ties Points 2205

J'utilise personnellement le plugin jquery dump alot pour vider les objets, c'est un peu similaire à la fonction print_r() de php. Utilisation de base :

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"
     )
}
*/

Sa lecture est très humaine, je recommande également ce site. http://json.parser.online.fr/ pour créer/parser/lire le json, car il a de belles couleurs

4voto

user579338 Points 83

Voici le code que j'utilise. Vous devriez pouvoir 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>&quot;' + data[key] + '&quot;</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>

2voto

hotzen Points 828

Quelque chose comme ça ?

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X