如何在node.js中访问JSON对象的动态键值?

时间:2020-04-08 09:22:36

标签: javascript node.js json

我在检索JSON数据时遇到问题。

这里获取带有动态键的JSON。而且我需要访问该动态键的值。动态密钥来自URL,正在从数据库中获取该密钥的数据。

这是我的示例数据。

let roleData = [
  {
    "assetCategory": {
       "canCreate": false,
       "canView": false,
       "canUpdate": false,
       "canDelete": false,
       "isMenu": false,
       "parent": "settings"
     }
  }
]

在上面的JSON中,我有assetCategory对象。但是这个值是完全动态的。在assetCategory处也可能得到其他值。因此,在不知道此密钥的情况下,访问数据变得越来越困难。

有什么方法可以访问此动态对象?

3 个答案:

答案 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']