我有一个返回JSON对象的查询函数,如下所示:
-------
| X |
-------
-----------------
| |
-----------------
在控制台中我想使用以下方法打印值:
[
{
"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"
}
}
]
但它会引发错误:
未捕获的TypeError:无法读取属性' FirstName'未定义的
但对于console.log(JSON.stringify(k.data[0].Account.FirstName));
字段,它正常运行:
ID
a04c0000008KH4R
有没有办法解析JSON元素,字段名称包含'。'或其中的其他特殊字符,如console.log(JSON.stringify(k.data[0].ID));
?
答案 0 :(得分:5)
您需要遵循以下程序:
Sub ChangeIt(c1 As Range)
c1.Interior.ColorIndex = 3
End Sub
Function Test()
With Application.Caller
.Parent.Evaluate "Changeit(" & .Address(False, False) & ")"
End With
Test = "Hello"
End Function
答案 1 :(得分:1)
是,
您需要使用括号表示法而不是点符号,这是您当前使用的符号。试试这个:
isDisplayed()
这样,您将使用JSON中存储的方式(使用名为“Account.FirstName”的键)来处理值,而不是将其作为具有FirstName属性的Account对象进行寻址。
答案 2 :(得分:0)
您在此处收到错误,因为您试图以JS解释为另一个嵌套对象的方式访问您的对象属性。使用bracket notation将在此处工作,将对象键更改为不使用'。'作为分隔符也可以。
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'
}