2009-05-11 26 views
2

Ich habe dieses Objekt, das ich als eine Liste von Objekten verwendet werden:Problem mit Parsing JSON-String

var objList = new Object(); 

Dieser dann JSON serialize serialisiert werden. Wenn kein Objekt hinzugefügt wird oder alle Objekte aus der Liste entfernt wurden und die leere objList serialisiert wurde und die objList mit dem JSON-Parser im IE analysiert wurde, wird es gelegentlich nicht möglich sein, die objList als JavaScript-Objekt auszuwerten.

Dies bewirkt, dass das Objekt nicht diese Eigenschaft oder Methode Fehler nicht unterstützt, wenn ein Objekt in den objList hinzufügen binden:

objList['idx']=objData; 

Weiß jemand, warum IE nicht gelegentlich objList bewerten: {}, um eine Objekt und jemand anderes ist auf dieses Problem gestoßen.

Die tatsächliche JSON-String, wenn der objList ist '{}'

Die objList initialisiert:

objList = g_objList.parseJSON(); 
+0

Wie sieht die JSON-Kette in diesem Fall aus? –

+0

Ich bin verwirrt: Sie erwähnen "Liste der Objekte", aber tatsächlich ein reguläres Objekt (~ = "map"), keine Liste oder Array. Wenn Sie eine Liste hatten, sollten Sie "new Array()" anstelle von "Object" verwenden. Aber die Beschreibung legt nahe, dass Sie nicht wirklich eine Liste haben. – StaxMan

+0

Sie können auf Objekteigenschaften nach obj.id oder obj ['id'] zugreifen. – bgosalci

Antwort

0

Ihre Serializer funktioniert nicht richtig, wenn die JSON-String ist g_objList = {} ich würde vorschlagen, etwas zu tun, wie ...

objList = objList || {}; 

vor objList verwenden. Ich schätze, Sie erhalten eine g_objList Objekt-Zeichenfolge anstelle der leeren Objlist. Die obige Zeile nach dem Test sollte die Dinge klären.

Im Wesentlichen wird objList auf Ihre vorhandene Variable gesetzt oder ein neues, leeres Objekt erstellt.

+0

Grundsätzlich wird die JSON-Zeichenfolge in g_objList gespeichert, die auf dem Clientcomputer gespeichert wird. Bei Bedarf wird die ObjList mit dem Wert von g_objList initialisiert: objList = g_objList.parseJSON(); Ich habe Kontrollen an Ort und Stelle, die die Ausnahme erkennen und wenn die JSON-Zeichenfolge = '{}' initialisiere ich ObjList auf objList = new Object(); Was ich wirklich nicht verstehe, ist, warum es meistens funktioniert, wenn der JSON auf '{}' gesetzt ist, aber manchmal versäumt es der IE, '{}' auszuwerten. Die Lösung wird täglich von 1000 Benutzern verwendet und der Code objList = g_objList.parseJSON(); schlägt 3 oder 5 Mal am Tag fehl, wenn die JSON-Zeichenfolge auf '{}' gesetzt ist. – bgosalci

+0

Wird die URL * wirklich * zur Rückgabe von '{}' angefordert oder gibt sie einen Fehler zurück? genau so ... objlist = g_onjList.parseJSON() || {}; sollte funktionieren .. zwingt das Objekt. Auch, welchen JSON-Parser verwendest du? (json.org, asp.net ajax, prototype.js)? – Tracker1