Pourquoi ne Appcelerator Titanium mobile analyser ce JSON?
-
25-09-2019 - |
Question
Utilisation 1.4.1 contre Android sous Windows 7. J'ai un service Web étant l'accès à l'application de titane, le retourne le service JSON comme ceci:
{
"VFPData": {
"rows": [
{
"address1": "Orion House",
"address2": "Orion Way",
"address3": "Kettering",
"address4": "Northants",
"comp_name": "Orion Vehicles Leasing",
"contid": 1,
"email": "",
"email2": "",
"fax": "",
"firstname": "David John",
"lastname": "Sear",
"mobile": "",
"phone1": "",
"phone2": "",
"postcode": "NN15 6PE"
},
{
"address1": "Unit 20 Acton Business Park",
"address2": "Acton Lane",
"address3": "London",
"address4": "",
"comp_name": "Orion Vehicles Limited",
"contid": 2,
"email": "Mark@ovl.co.uk",
"email2": "",
"fax": "",
"firstname": "Mark",
"lastname": "Johnson",
"mobile": "0888 566 67879",
"phone1": "0208 209 1359",
"phone2": "",
"postcode": "NW10 7NH"
}
]
}
}
Cependant, aucune combinaison de eval ou JSON.parse retournera un résultat valide - par exemple:
var contacts = JSON.parse(this.responseText);
alert(contacts.length);
Cela affichera une boîte de dialogue d'alerte avec rien dedans. Le titane appels HttpClient fonctionnent très bien que je peux
Ti.debug(this.responseText)
sans problème.
Ce JSON valide OK ainsi, dans jsonlint.com par exemple.
La solution
Le JSON semble bien, et bien ... mais parse est la ligne:
alert(contacts.length);
la seule partie qui vous amène à croire qu'il ne fonctionne pas? Parce que vous ne pouvez pas obtenir la longueur d'un objet (VFPData) ... vous obtiendrez undefined / null si l'analyse syntaxique valide est passé ou non. Un meilleur test est:
alert(contacts.VFPData.rows.length);
... puisque vous savez des lignes est un tableau. Ou:
alert(contacts);
Ce qui devrait le signaler est un objet (si analysable) ou null / non définie autrement.