我在检索JSON数据时遇到问题。
这里获取带有动态键的JSON。而且我需要访问该动态键的值。动态密钥来自URL,正在从数据库中获取该密钥的数据。
这是我的示例数据。
let roleData = [
{
"assetCategory": {
"canCreate": false,
"canView": false,
"canUpdate": false,
"canDelete": false,
"isMenu": false,
"parent": "settings"
}
}
]
在上面的JSON中,我有assetCategory
对象。但是这个值是完全动态的。在assetCategory
处也可能得到其他值。因此,在不知道此密钥的情况下,访问数据变得越来越困难。
有什么方法可以访问此动态对象?
答案 0 :(得分:3)
let data = [
{
"assetCategory": {
"canCreate": false,
"canView": false,
"canUpdate": false,
"canDelete": false,
"isMenu": false,
"parent": "settings"
}
}
]
let unknownNames = data.map( item => Object.keys(item)) // returns ['assetCategory']
//Returns array of all the unknown names
console.log(unknownNames);
答案 1 :(得分:2)
您应该使用Object.keys(...)
:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
例如:
const a = [
{
"assetCategory": {
"canCreate": false,
"canView": false,
"canUpdate": false,
"canDelete": false,
"isMenu": false,
"parent": "settings"
}
}
];
const name = Object.keys(a[0])[0]; // --> "assetCategory"
console.log(a[0][name]) // --> {"canCreate": false, ...}
答案 2 :(得分:1)
您可以通过Object.keys(data[0].assetCategory)
获取所有密钥。然后data[0].assetCategory[varWithKeyValue]
或动态data[0].assetCategory['can' + 'Create']