2017-10-11 80 views
1

我有一个返回一个JSON对象,如下查询函数名称:访问场与具有特殊字符

[ 
    { 
     "ID":{ 
     "value":"a04c0000008KH4R", 
     "display":"a04c0000008KH4R", 
     "dataType":"string", 
     "label":"Record ID" 
     }, 
     "Account_vod__c":{ 
     "value":"001c000001BCLKfAAP", 
     "display":"001c000001BCLKfAAP", 
     "dataType":"string", 
     "label":"Account" 
     }, 
     "Account.ID":{ 
     "value":"001c000001BCLKfAAP", 
     "display":"001c000001BCLKfAAP", 
     "dataType":"string", 
     "label":"Record ID" 
     }, 
     "Account.FirstName":{ 
     "value":"Abdi", 
     "display":"Abdi", 
     "dataType":"string", 
     "label":"FirstName" 
     } 
    } 
] 

在控制台我想使用的值进行打印:

console.log(JSON.stringify(k.data[0].Account.FirstName)); 

但它抛出错误:

Uncaught TypeError: Cannot read property 'FirstName' of undefined

但对于ID场可以正常工作:

console.log(JSON.stringify(k.data[0].ID)); 

a04c0000008KH4R

有什么办法来解析JSON元素,具有字段名 ''或者其他特殊字符,如Account.FirstName

+0

使用['Account.FirstName']而不是Account.FirstName。试图绕过不存在的节点“帐户”的方括号,然后查找也不存在的子节点“名”。 – Budhead2004

回答

5

你需要遵循以下步骤:

console.log(JSON.stringify(k.data[0]['Account.FirstName'])); 
1

是,

你会想用括号标记为这个而不是点符号,这是目前使用的是什么。试试这个:

console.log(JSON.stringify(k.data[0]["Account.FirstName"])); 

这样,你讲话的值就被保存在JSON的方式(用一个名为“Account.FirstName”键),而不是解决它作为客户的目标与属性的名字。

0

由于您试图以JS解释为另一个嵌套对象的方式访问对象属性,因此您在此处收到错误。使用​​将在这里工作,改变你的对象键不使用'。'。作为分隔符也可以工作。

const data = '[ 
    { 
     "ID":{ 
     "value":"a04c0000008KH4R", 
     "display":"a04c0000008KH4R", 
     "dataType":"string", 
     "label":"Record ID" 
     }, 
     "Account_vod__c":{ 
     "value":"001c000001BCLKfAAP", 
     "display":"001c000001BCLKfAAP", 
     "dataType":"string", 
     "label":"Account" 
     }, 
     "Account.ID":{ 
     "value":"001c000001BCLKfAAP", 
     "display":"001c000001BCLKfAAP", 
     "dataType":"string", 
     "label":"Record ID" 
     }, 
     "Account.FirstName":{ 
     "value":"Abdi", 
     "display":"Abdi", 
     "dataType":"string", 
     "label":"FirstName" 
     } 
    } 
]'; 
let parse = JSON.parse(data); 

/* 
This will trigger the error you get: 
console.log(JSON.stringify(parse.Account.FirstName)); 

JS will interpret this as: 
    parse: { 
     Account: { 
     FirstName: 'value' 
    } 
    } 
*/ 
console.log(JSON.stringify(parse['Account.FirstName'])); 
/* 
JS will interpret this correctly as 
    parse: { 
    'Account.FirstName': 'value' 
}