Domanda

Uso 1.4.1 contro Android sotto Windows 7. Ho un servizio web di essere l'accesso dall'applicazione di titanio, il servizio restituisce JSON in questo modo:

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

Tuttavia nessuna combinazione di eval o JSON.parse restituirà un risultato valido - ad esempio:

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

Questo mostrerà una finestra di avviso con niente dentro. La multa titanio HTTPClient chiamate stanno lavorando come posso

Ti.debug(this.responseText) 

senza alcun problema.

Questo JSON convalida OK pure, in jsonlint.com per esempio.

È stato utile?

Soluzione

Il JSON guarda bene, e analizza bene ... ma è la linea:

alert(contacts.length);

l'unica parte che porta a credere che non funziona? Poiché non è possibile ottenere la lunghezza di un oggetto (VFPData) ... avrai identificato / nullo se l'analisi valida successo o meno. Un test migliore è:

alert(contacts.VFPData.rows.length);

... poiché si sa righe è un array. Oppure:

alert(contacts);

Che dovrebbe riferire è un oggetto (se analizzato) o null / undefined altrimenti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top