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


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

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/


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


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>

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;
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.