Voici à quoi ressemble mon corps de réponse. Il est stocké dans une variable et lorsque j'utilise console.log(body), j'obtiens ce qui suit.

[
   {
      "key1":"value1",
      "key2":"value2",
      "key3":"value3"
   }
]

J'essaie d'accéder à "key3" en utilisant ce qui suit

console.log(body[0].key3) 

Je deviens indéfini. Je ne sais pas ce qui ne va pas ici. Si je fais juste

console.log(body[0])

Je reçois une chaîne [

Merci pour votre aide ici.

0
jr0531 8 mars 2019 à 02:42

2 réponses

Meilleure réponse

Le problème expliqué

Votre JS regarde la propriété sur un caractère spécifique :

Jetez un œil à l'exemple suivant qui vous aidera à démontrer ce qui se passe :

const string = 'Hello';
console.log(string[0] === 'H'); // true
console.log('H'.key3 === undefined); // true

La solution

Vous devez JSON.parse la chaîne :

const body = `
[
   {
      "key1":"value1",
      "key2":"value2",
      "key3":"value3"
   }
]
`;

const parsed = JSON.parse(body);
console.log(parsed[0].key3);
1
KevBot 8 mars 2019 à 15:26

body ressemble à une chaîne - JSON.parse à un objet :

var body = '[{"key1": "value1","key2": "value2","key3": "value3"}]';
console.log(body[0]);
body = JSON.parse(body);
console.log(body[0].key3);
1
Jack Bashford 7 mars 2019 à 23:45