Sehen Sie sich ein einfaches jQuery-Beispiel an, um über ein JavaScript-Array-Objekt zu iterieren.
var json = [ {"id":"1","tagName":"apple"}, {"id":"2","tagName":"orange"}, {"id":"3","tagName":"banana"}, {"id":"4","tagName":"watermelon"}, {"id":"5","tagName":"pineapple"} ]; $.each(json, function(idx, obj) { alert(obj.tagName); });
Das obige Code-Snippet funktioniert einwandfrei und fordert wie erwartet „Apfel“, „Orange“ usw. auf.
Problem: JSON-Zeichenfolge
Im folgenden Beispiel wird eine JSON-Zeichenfolge (in einfache oder doppelte Anführungszeichen eingeschlossen) direkt deklariert.
var json = '[{"id":"1","tagName":"apple"},{"id":"2","tagName":"orange"}, {"id":"3","tagName":"banana"},{"id":"4","tagName":"watermelon"}, {"id":"5","tagName":"pineapple"}]'; $.each(json, function(idx, obj) { alert(obj.tagName); });
In Chrome wird in der Konsole der folgende Fehler angezeigt:
Unabgefangener Typfehler: Der „in“-Operator kann nicht für die Suche nach „156“ verwendet werden
in [{"id": "1", "tagName": "apple"}...
Lösung: JSON-String in JavaScript-Objekt konvertieren.
Um das Problem zu beheben, konvertieren Sie es über Standard JSON.parse() oder $.parseJSON von jQuery in ein JavaScript-Objekt.
var json = '[{"id":"1","tagName":"apple"},{"id":"2","tagName":"orange"}, {"id":"3","tagName":"banana"},{"id":"4","tagName":"watermelon"}, {"id":"5","tagName":"pineapple"}]'; $.each(JSON.parse(json), function(idx, obj) { alert(obj.tagName); }); //or $.each($.parseJSON(json), function(idx, obj) { alert(obj.tagName); });