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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top