web-dev-qa-db-fra.com

JSON à chaîne variable dump

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)?

79
ina

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);
118
Anders

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/

28
Nick Craver

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

13
Ties

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>&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>
4
user579338

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