Pregunta

Uso 1.4.1 contra Android en Windows 7. Tengo un servicio web siendo el acceso de la aplicación de titanio, el servicio devuelve JSON como esto:

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

Sin embargo, ninguna combinación de eval o JSON.parse devolverá un resultado válido - por ejemplo:

var contacts = JSON.parse(this.responseText);
alert(contacts.length);

Esto mostrará un diálogo de alerta con nada en él. La multa de titanio HTTPClient llamadas están trabajando como pueda

Ti.debug(this.responseText) 

sin ningún problema.

Esto valida JSON bien así, en jsonlint.com por ejemplo.

¿Fue útil?

Solución

El JSON se ve bien, y lo analiza bien ... pero es la línea:

alert(contacts.length);

la única parte que le lleva a creer que no está funcionando? Porque no se puede obtener la longitud de un objeto (VFPData) ... usted conseguirá Indefinido / null si el análisis válido o no sucedió. Una prueba mejor es:

alert(contacts.VFPData.rows.length);

... ya sabes filas es una matriz. O:

alert(contacts);

¿Qué debe informar que es un objeto (si se ha analizado) o nulo / sin definir de otra manera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top