parsing array - JSON in JavaScript analysieren?




auslesen get (14)

Der einfachste Weg mit der parse() Methode:

var response = '{"a":true,"b":1}';
var JsonObject= JSON.parse(response);

Dies ist ein Beispiel dafür, wie man Werte erhält:

var myResponseResult = JsonObject.a;
var myResponseCount = JsonObject.b;

Diese Frage hat hier bereits eine Antwort:

Ich möchte eine JSON-Zeichenfolge in JavaScript analysieren. Die Antwort ist etwas wie

var response = '{"result":true,"count":1}';

Wie kann ich die Werte erhalten und daraus count ?


Zuerst müssen Sie sicherstellen, dass der JSON-Code gültig ist.

Danach würde ich empfehlen, eine JavaScript-Bibliothek wie jQuery oder Prototype zu verwenden, wenn Sie können, da diese Dinge in diesen Bibliotheken gut gehandhabt werden.

Wenn Sie andererseits keine Bibliothek verwenden möchten und für die Gültigkeit des JSON-Objekts bürgen können, würde ich die Zeichenfolge einfach in eine anonyme Funktion einfügen und die eval-Funktion verwenden.

Dies wird nicht empfohlen, wenn Sie das JSON-Objekt von einer anderen Quelle erhalten, die nicht absolut vertrauenswürdig ist, da die eval-Funktion möglicherweise Renegade-Code zulässt.

Hier ist ein Beispiel für die Verwendung der Eval-Funktion:

var strJSON = '{"result":true,"count":1}';
var objJSON = eval("(function(){return " + strJSON + ";})()");
alert(objJSON.result);
alert(objJSON.count);

Wenn Sie kontrollieren, welcher Browser verwendet wird, oder Sie sich nicht mit einem älteren Browser Sorgen machen, können Sie immer die JSON.parse-Methode verwenden.

Das ist wirklich die ideale Lösung für die Zukunft.


Wenn Sie JSON 3 für ältere Browser verwenden möchten, können Sie es bedingt laden:

<script>
    window.JSON || 
    document.write('<script src="//cdnjs.cloudflare.com/ajax/libs/json3/3.2.4/json3.min.js"><\/scr'+'ipt>');
</script>

Jetzt steht Ihnen das standard window.JSON Objekt zur Verfügung, egal in welchem ​​Browser ein Client läuft.


Wenn Sie jQuery verwenden, ist es einfach:

var response = '{"result":true,"count":1}';
var obj = $.parseJSON(response);
alert(obj.result); //true
alert(obj.count); //1

JSON.parse () konvertiert alle in die Funktion übergebenen JSON-Zeichenfolgen in ein JSON-Objekt.

Zum besseren Verständnis drücken Sie F12 , um das Inspect-Element Ihres Browsers zu öffnen, und gehen Sie zur Konsole, um die folgenden Befehle zu schreiben:

var response = '{"result":true,"count":1}'; // Sample JSON object (string form)
JSON.parse(response); // Converts passed string to a JSON object.

Jetzt führe den Befehl aus:

console.log(JSON.parse(response));

Sie erhalten die Ausgabe als Objekt {result: true, count: 1}.

Um dieses Objekt zu verwenden, können Sie es der Variablen zuweisen, sagen wir obj :

var obj = JSON.parse(response);

Jetzt können Sie mit obj und dem Punktoperator (.) Auf die Eigenschaften des JSON-Objekts zugreifen.

Versuchen Sie, den Befehl auszuführen

console.log(obj.result);

Wie von vielen anderen erwähnt, unterstützen die meisten Browser JSON.parse und JSON.stringify .

Nun möchte ich hinzufügen, dass wenn Sie AngularJS (was ich sehr empfehlen kann), bietet es auch die Funktionalität, die Sie benötigen:

var myJson = '{"result": true, "count": 1}';
var obj = angular.fromJson(myJson);//equivalent to JSON.parse(myJson)
var backToJson = angular.toJson(obj);//equivalent to JSON.stringify(obj)

Ich wollte nur etwas über AngularJS hinzufügen, um eine andere Option zu bieten. Beachten Sie, dass AngularJS Internet Explorer 8 (und ältere Versionen) nicht offiziell unterstützt, obwohl die meisten Dinge durch Erfahrung ziemlich gut funktionieren.


Die meisten Browser unterstützen JSON.parse() , das in ECMA-262 5th Edition definiert ist (die Spezifikation, auf der JavaScript basiert). Seine Verwendung ist einfach:

var json = '{"result":true,"count":1}',
    obj = JSON.parse(json);

alert(obj.count);

Für die Browser, die das nicht können, können Sie es mit json2.js .

Wie bereits in den Kommentaren erwähnt, gibt es, wenn Sie bereits jQuery verwenden, eine $.parseJSON Funktion, die JSON.parse falls verfügbar, oder eine Form von eval in älteren Browsern JSON.parse . Dies führt jedoch zusätzliche, unnötige Prüfungen durch, die auch von JSON.parse werden. Für die beste Allround-Performance würde ich daher empfehlen, sie wie JSON.parse :

var json = '{"result":true,"count":1}',
    obj = JSON && JSON.parse(json) || $.parseJSON(json);

Dadurch wird sichergestellt, dass Sie native JSON.parse sofort verwenden, anstatt jQuery vor dem Übergeben an die native JSON.parse die JSON.parse der Zeichenfolge überprüfen zu lassen.


Ein einfacher Weg, es zu tun:

var data = '{"result":true,"count":1}';
var json = eval("[" +data+ "]")[0]; // ;)

Wenn Sie dies von einer externen Website erhalten, kann es hilfreich sein, jQuerys getJSON zu verwenden. Wenn es eine Liste ist, können Sie sie mit $ .each durchlaufen

$.getJSON(url, function (json) {
    alert(json.result);
    $.each(json.list, function (i, fb) {
        alert(fb.result);
    });
});

Wenn du möchtest

var response = '{"result":true,"count":1}';
var JsonObject= JSON.parse(response);

Sie können auf die JSON-Elemente von JsonObject mit (.) dot zugreifen:

JsonObject.result;
JsonObject.count;

Ohne eine Bibliothek zu verwenden, können Sie eval - die einzige Zeit, die Sie verwenden sollten. Es ist jedoch sicherer, eine Bibliothek zu verwenden.

z.B...

var response = '{"result":true , "count":1}';

var parsedJSON = eval('('+response+')');

var result=parsedJSON.result;
var count=parsedJSON.count;

alert('result:'+result+' count:'+count);

Das folgende Beispiel wird klarstellen:

var jsontext   = '{"name":"x","age":"11"}';
var getContact = JSON.parse(jsontext);
document.write(getContact.name + ", " + getContact.age);

// Output: x, 11

ODER

Sie können auch die eval Funktion verwenden. Im folgenden Beispiel wird die eval Funktion verwendet:

var jsontext   = '{"name":"x","age":"11"}';
var getContact = eval('(' + jsontext + ')');
document.write(getContact.name + ", " + getContact.age);

// Output: x, 11

Da die JSON.parse Funktion sicherer ist und schneller als die eval-Funktion ausgeführt wird, empfehle ich Ihnen, die Funktion JSON.parse verwenden.


Wenn Sie Dojo Toolkit verwenden :

require(["dojo/json"], function(JSON){
    JSON.parse('{"hello":"world"}', true);
});





javascript json parsing