我的Web服务正在返回一个名为jsonString的JSON数组。我正在使用jQuery mobile。这具有值:
{
"id": "10844",
"password": "acddcd",
"role": ["PortalAdmin,ViewAllJob,SetupAdmin,Budget Approval,MarketingAdmin,ProjectManagementAdmin,HRAdmin,PayRollAdmin,SCMAdmin,VendorPortalAdmin,FinanceAdmin,AnalyticsAdmin"],
"userName": "portaluser"
}
在文本框中显示此数组的内容(#as
是文本框):
$('#as').val(jsonString);
当我使用此代码时:
var a = {
"id": "10844",
"password": "acddcd",
"role": ["PortalAdmin,ViewAllJob,SetupAdmin,Budget Approval,MarketingAdmin,ProjectManagementAdmin,HRAdmin,PayRollAdmin,SCMAdmin,VendorPortalAdmin,FinanceAdmin,AnalyticsAdmin"],
"userName": "portaluser"
};
alert(a.id);
我得到正确答案,即10844
但是,当我使用此代码时:
var a=jsonString;
alert(a.id);
我得到undefined
。为什么呢?
答案 0 :(得分:1)
在第一种情况下,您创建一个对象,当您访问此对象的id
属性时,没有问题。
在第二种情况下,您将变量作为字符串赋予JSON。它没有id
属性,您必须首先解析JSON字符串,而不是访问其属性。
在第二种情况下执行此操作:
var a = JSON.parse(jsonString);
alert(a.id);
如果jsonString
不是字符串而是对象,则有两件事需要提及:
jsonString
变量。jsonString
,其他人会认为它是一个字符串。如果是对象,则将其称为jsonObject
或jsonResponse
。答案 1 :(得分:0)
var JSONstring = {
"id": "10844",
"password": "acddcd",
"role": ["PortalAdmin,ViewAllJob,SetupAdmin,Budget Approval,MarketingAdmin,ProjectManagementAdmin,HRAdmin,PayRollAdmin,SCMAdmin,VendorPortalAdmin,FinanceAdmin,AnalyticsAdmin"],
"userName": "portaluser"
};
您需要定义JSONstring
,其余代码正常运行,
var a = JSONstring;
alert(a.id);