Question

J'utilise titane pour une application mobile. Dans l'application, le serveur renvoie des données JSON, qui est ensuite analysé par JSON.parse (). Sur Android, il fonctionne très bien. Je également double-vérifié pour vous assurer qu'il est valide avec http://jsonformatter.curiousconcept.com/

Voici mes données JSON:

    {
   "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"
   }
   }

Quand j'ai essayé de vérifier ce que je reçois avec:

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

il ressemble à l'objet « 0 » est pas analysé comme il est censé être, mais ses champs sont fait partie des parents est tout. Voici la sortie:

[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]

D'après ce que je vois .. ce n'est pas ce qu'il est censé revenir. J'ai essayé de joindre le compte entre guillemets, pour changer le « 0 » à « 10 », mais les séjours d'analyse syntaxique même. Si vous avez besoin de plus d'information, s'il vous plaît laissez-moi savoir.

Merci

Était-ce utile?

La solution

JSON.parse(str, func) est appelé pour chaque propriété récursive pour le formatage / fins de remplacement. Il ne parvient pas, mais vous ne devriez pas l'utiliser pour vos besoins.

Si vous voulez itérer sur l'objet, vous feriez mieux d'analyser le JSON régulièrement et utilisez une boucle:

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]);
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top