Por que o Appcelerator Titanium Mobile Parse este JSON?
-
25-09-2019 - |
Pergunta
Usando 1.4.1 contra o Android no Windows 7. Tenho um serviço da web sendo o acesso do aplicativo Titanium, o serviço retorna JSON como este:
{
"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"
}
]
}
}
No entanto, nenhuma combinação de avaliar ou json.parse retornará um resultado válido - por exemplo:
var contacts = JSON.parse(this.responseText);
alert(contacts.length);
Isso mostrará uma caixa de diálogo de alerta sem nada nele. As chamadas httpclient de titânio estão funcionando bem o que posso
Ti.debug(this.responseText)
sem nenhum problema.
Que JSON valida ok também, em jsonlint.com, por exemplo.
Solução
O JSON parece bem e passa bem ... mas é a linha:
alert(contacts.length);
A única parte que o leva a acreditar que não está funcionando? Porque você não pode obter o comprimento de um objeto (vfpdata) ... você ficará indefinido/nulo se a análise válida aconteceu ou não. Um teste melhor é:
alert(contacts.VFPData.rows.length);
... Como você sabe que linhas é uma matriz. Ou:
alert(contacts);
Que deve relatar que é um objeto (se analisado) ou nulo/indefinido de outra forma.