Frage

Mit 1.4.1 gegen Android unter Windows 7. Ich habe einen Web-Service-Zugang von der Titanium-Anwendung sein, der Service liefert JSON wie folgt aus:

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

jedoch keine Kombination von eval oder JSON.parse ein gültiges Ergebnis zurück - zum Beispiel:

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

Das wird eine Warnung Dialog mit nichts darin zeigen. Das Titanium Httpclient Anrufe arbeiten gut wie ich kann

Ti.debug(this.responseText) 

mit keinem Problem.

Das JSON bestätigt OK als auch, in jsonlint.com zum Beispiel.

War es hilfreich?

Lösung

Die JSON sieht gut aus, und parst in Ordnung ... aber ist die Zeile:

alert(contacts.length);

Der einzige Teil, führt Sie es glauben funktioniert nicht? Weil Sie nicht die Länge eines Objektes (VFPData) bekommen kann ... werden Sie nicht definiert / null erhalten, ob gültige Parsing passiert ist oder nicht. Ein besserer Test ist:

alert(contacts.VFPData.rows.length);

... da Sie Zeilen wissen, ist ein Array. Oder:

alert(contacts);

Welche berichten sollte es ein Objekt (wenn analysiert) oder null / undefiniert sonst.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top