Frage

Ich verwende Titan für eine mobile Anwendung. In der Anwendung gibt der Server JSON -Daten zurück, die dann von JSON.Parse () analysiert werden. Auf Android funktioniert es gut. Ich habe es auch überprüft, um sicherzustellen, dass es mit gültig ist http://jsonformatter.curiousconcept.com/

Hier sind meine JSON -Daten:

    {
   "email":"example@mail.com",
   "count":6,
   "0":{
      "id":"146996",
      "user_id":"25069",
      "item":"item1",
      "start_my_day":"none",
      "scheduled":"n",
      "calendar":"none",
      "start":"00000000T000000",
      "end":"00000000T000000",
      "added":"2011-11-30 06:55:47",
      "updated":"2011-11-30 06:55:47"
   },
   "1":{
      "id":"146988",
      "user_id":"25069",
      "item":"item2",
      "start_my_day":"none",
      "scheduled":"n",
      "calendar":"none",
      "start":"00000000T000000",
      "end":"00000000T000000",
      "added":"2011-11-30 06:52:20",
      "updated":"2011-11-30 06:52:20"
   }
   }

Als ich versuchte zu überprüfen, was ich bekomme:

var response = JSON.parse(json, function (key, value) {
    Ti.API.debug('JSON: ' + key + ' <-> ' + value);
    return value;
});

Es sieht so aus, als ob das Objekt "0" nicht so analysiert ist, wie es sein soll, aber seine Felder werden Teil des Elternteils. Hier ist die Ausgabe:

[DEBUG] JSON: email <-> example@mail.com
[DEBUG] JSON: count <-> 2
[DEBUG] JSON: id <-> 146996
[DEBUG] JSON: user_id <-> 25069
[DEBUG] JSON: item <-> item1
[DEBUG] JSON: start_my_day <-> none
[DEBUG] JSON: scheduled <-> n
[DEBUG] JSON: calendar <-> none
[DEBUG] JSON: start <-> 00000000T000000
[DEBUG] JSON: end <-> 00000000T000000
[DEBUG] JSON: added <-> 2011-11-30 06:55:47
[DEBUG] JSON: updated <-> 2011-11-30 06:55:47
[DEBUG] JSON: 0 <-> [object Object]
[DEBUG] JSON: id <-> 146988
[DEBUG] JSON: user_id <-> 25069
[DEBUG] JSON: item <-> item2
[DEBUG] JSON: start_my_day <-> none
[DEBUG] JSON: scheduled <-> n
[DEBUG] JSON: calendar <-> none
[DEBUG] JSON: start <-> 00000000T000000
[DEBUG] JSON: end <-> 00000000T000000
[DEBUG] JSON: added <-> 2011-11-30 06:52:20
[DEBUG] JSON: updated <-> 2011-11-30 06:52:20
[DEBUG] JSON: 1 <-> [object Object]
[DEBUG] JSON:  <-> [object Object]

Soweit ich sehe, ist es nicht das, was es zurückkehren soll. Ich habe versucht, die Zitate in Zitaten einzuschließen, um die "0" in "10" zu ändern, aber die Parsen bleibt gleich. Wenn Sie weitere Informationen benötigen, lassen Sie es mich bitte wissen.

Vielen Dank

War es hilfreich?

Lösung

JSON.parse(str, func) wird für jede Eigenschaft rekursiv für Formatierungs-/Ersatzzwecke auffordert. Es scheitert nicht, aber Sie sollten es nicht für Ihre Bedürfnisse verwenden.

Wenn Sie über das Objekt iterieren möchten, sollten Sie den JSON besser regelmäßig analysieren und eine Schleife verwenden:

var parsed = JSON.parse(json);

for(var key in parsed) {
    console.log(key, parsed[key]);

    for(var key2 in parsed[key]) {
        console.log("Nested: ", key2, parsed[key][key2]);
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top