JSON zum String Variable Dump

82

Gibt es eine Schnellfunktion zum Konvertieren von über empfangenen JSON-Objekten jQuery getJSONin einen String-Variablen-Dump (für Tracing- / Debugging-Zwecke)?

in einem
quelle
5
Dumme Frage - warum wurde dies als Spam gekennzeichnet?
Ina
1
Aus dem gleichen Grund werden meine Fragen abgelehnt, manchmal sind Benutzer mit ihren Klicks ungenau!
Toni Leigh

Antworten:

121

Ja, JSON.stringifykann gefunden werden hier , es ist enthalten in Firefox 3.5.4 und höher.

Ein JSON-Stringifizierer geht in die entgegengesetzte Richtung und konvertiert JavaScript-Datenstrukturen in JSON-Text. JSON unterstützt keine zyklischen Datenstrukturen. Achten Sie daher darauf, dem JSON-Stringifizierer keine zyklischen Strukturen zuzuweisen. https://web.archive.org/web/20100611210643/http://www.json.org/js.html

var myJSONText = JSON.stringify(myObject, replacer);
Anders
quelle
1
Es ist auch in Chrome enthalten, aber Sie haben eine (riesige) 404 auf diesem json.org-Link
Dean Rather
1
Wenn Sie nur Daten mit diesem Protokoll protokollieren möchten: console.log (JSON.stringify (data, null)); Übergeben Sie null, wenn Sie keine Ersatzfunktion benötigen!
Elliotrock
29

Sie können console.log()in Firebug oder Chrome verwenden, um hier eine gute Objektansicht zu erhalten:

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

Wenn Sie nur die Zeichenfolge anzeigen möchten , sehen Sie in der Ressourcenansicht in Chrome oder in der Netzansicht in Firebug die tatsächliche Zeichenfolgenantwort vom Server (Sie müssen sie nicht konvertieren ... Sie haben sie auf diese Weise erhalten).

Wenn Sie diese Zeichenfolge für eine einfache Anzeige zerlegen möchten, finden Sie hier ein hervorragendes Tool: http://json.parser.online.fr/

Nick Craver
quelle
Es ist nützlich, einen Fehlerbehandler hinzuzufügen, da sonst ein Fehler getJSONauftritt und Sie nur schwer verstehen können, warum dies nicht funktioniert: Hinzufügen .fail(function(jqxhr, status, error) { alert(status + ", " + error);}).
Skippy le Grand Gourou
13

Ich persönlich benutze das JQuery Dump Plugin viel, um Objekte zu sichern. Es ist ein bisschen ähnlich wie die print_r () Funktion von PHP. Grundlegende Verwendung:

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

Es ist sehr menschlich lesbar, ich empfehle auch diese Seite http://json.parser.online.fr/ zum Erstellen / Parsen / Lesen von Json, weil es schöne Farben hat

Krawatten
quelle
1
Das ist wirklich großartig, aber es erfordert die Installation eines weiteren Plugins (und nur zum Debuggen)
ina
Ja, ich weiß ... aber wenn ich nach Antworten suche, finde ich oft etwas Nützliches in den Antworten, weil mein Problem mit dem Problem zusammenhängt. Dieses Plugin könnte in der Tat ein bisschen übertrieben sein, wenn Sie nur ein einfaches Problem haben: P
Krawatten
4

Hier ist der Code, den ich benutze. Sie sollten in der Lage sein, es an Ihre Bedürfnisse anzupassen.

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>
user579338
quelle
2

etwas entlang dieser?

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