使用1.4.1对机器人视窗7下我有一个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);

这将显示与什么也没有一个警告对话框。钛了HTTPClient呼叫工作正常,因为我可以

Ti.debug(this.responseText) 

没有问题。

这JSON验证行,以及,在jsonlint.com例如

有帮助吗?

解决方案

在JSON看起来很好,并解析细...但行:

alert(contacts.length);

只有部分能指引你认为它不工作?因为你不能让一个对象(VFPData)的长度......你会得到未定义/ null的有效分析是否发生与否。一个更好的检验是:

alert(contacts.VFPData.rows.length);

...因为你知道行是一个数组。或者:

alert(contacts);

哪些应报告它是一个对象(如果解析)或空/未定义否则。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top