2 votes

`JSON.parse(await response.json())` jette SyntaxError : caractère inattendu à la ligne 1 colonne 2

Je veux ramener la age de la propriété JSON créée par l'API, mais cette erreur se produit :

SyntaxError : JSON.parse : caractère inattendu à la ligne 1 colonne 2 des données JSON

T console.log(await response.json()) me donne toutes mes données JSON, mais lorsque je la commente et que je mets la dernière ligne de code, cette erreur se produit.

On m'a dit d'essayer l'un de ces produits :

  • response.json()["age"]
  • response.json()[age]
  • response.json().age
  • let json = JSON.parse(response);

console.log(json["age"]) a été proche, mais n'a pas réussi.

let table = base.getTable("test");
let view = table.getView("Donnée brut");
let age;
let query = await view.selectRecordsAsync({
  sorts: [
    // sort by "Prénom" in ascending order...
    {
      field: "Prénom"
    }
  ]
});

// print ID & "Prénom" from each record:
for (let record of query.records) {
  let name = (record.getCellValueAsString('Prénom'));
  var response = await fetch('https://api.agify.io/?name=' + name);

  /* console.log(await response.json()); */

  let json = JSON.parse(await response.json());

  console.log(json["age"]);
}

3voto

Xufox Points 3719

Response.prototype.json analyse déjà le JSON. Vous attendez correctement cette promesse : await response.json() . Lors de l'enregistrement, les données analysées dont vous avez besoin sont déjà enregistrées : console.log(await response.json()); .

Lorsque vous essayez JSON.parse(await response.json()) vous contraignez l'objet à redevenir une chaîne de caractères, ce qui se traduit par "[object Object]" ce qui est un JSON invalide, d'où le message d'erreur. Supprimez ce message JSON.parse appel.

Si vous avez besoin de la age de la propriété JSON analysée, utiliser la propriété console.log((await response.json()).age); . Rappelez-vous que .json renvoie une promesse, et non l'objet analysé ; c'est pourquoi response.json().age et autres ne fonctionneront pas. Vous devez attendre avant la lecture de la propriété.

Vous pouvez également commencer par placer le résultat de l'analyse dans une variable :

// …

const result = await response.json();

console.log(result.age);

// …

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X