0

Windows 7 で Android に対して 1.4.1 を使用します。Titanium アプリケーションから Web サービスにアクセスすると、サービスは次のような JSON を返します。

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

ただし、eval または JSON.parse を組み合わせても有効な結果は返されません。たとえば、次のようになります。

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

何も表示されない警告ダイアログが表示されます。Titanium HTTPClient 呼び出しは、私ができる限り正常に機能しています

Ti.debug(this.responseText) 

問題ありません。

その JSON も、たとえば jsonlint.com で OK を検証します。

4

1 に答える 1

2

JSON は正常に見え、正常に解析されます...しかし、次の行です。

alert(contacts.length);

機能していないと思わせる唯一の部分は何ですか? オブジェクト (VFPData) の長さを取得できないため、有効な解析が行われたかどうかにかかわらず、undefined/null が返されます。より良いテストは次のとおりです。

alert(contacts.VFPData.rows.length);

...行が配列であることを知っているからです。または:

alert(contacts);

オブジェクト(解析された場合)またはnull/未定義であると報告する必要があります。

于 2010-08-31T13:46:37.840 に答える