Je rencontre des problèmes lors de la récupération des données JSON.

Voici le JSON avec des clés dynamiques. Et je dois accéder aux valeurs de cette clé dynamique.

Voici mes données d'exemple.

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

Dans le JSON ci-dessus, j'ai un objet assetCategory. Mais cette valeur est complètement dynamique. Je pourrais aussi obtenir d'autres valeurs à la place de assetCategory. Donc, sans connaître cette clé, il devient difficile pour moi d'accéder aux données.

Existe-t-il un moyen d'accéder à cet objet dynamique?

0
Aravind 8 avril 2020 à 12:22

3 réponses

Vous devez utiliser Object.keys(...): https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

Par exemple:

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, ...}
1
Pierre Avinain 8 avril 2020 à 09:24

Vous pouvez obtenir toutes les clés d'ici Object.keys(data[0].assetCategory). puis data[0].assetCategory[varWithKeyValue] ou s'il est dynamique data[0].assetCategory['can' + 'Create']

0
satanTime 8 avril 2020 à 09:25
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
Arpan Kc 8 avril 2020 à 09:41