Quiero recuperar la propiedad de age del JSON creado por la API, pero arroja este error:
SyntaxError:JSON.parse: carácter inesperado en la línea 1, columna 2 de los datos JSON
El console.log(await response.json()) me da todos mis datos JSON, pero cuando lo comento y coloco la última línea de código, ocurre este error.
Me dijeron que probara uno de estos:
response.json()["age"]response.json()[age]response.json().agelet json = JSON.parse(response); console.log(json["age"]) estuvo cerca, pero no tuvo éxito.
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"]); }Response.prototype.json ya analiza el JSON. Está esperando correctamente esta promesa: await response.json() . Al iniciar sesión, esto ya registra los datos analizados que necesita: console.log(await response.json()); .
Cuando intenta JSON.parse(await response.json()) , está obligando al objeto a volver a una cadena, lo que da como resultado "[object Object]" , que no es JSON válido, de ahí el mensaje de error. Quite esta llamada JSON.parse .
Si necesita la propiedad age del JSON analizado, use console.log((await response.json()).age); . Recuerde que .json devuelve una Promesa, no el objeto analizado; es por eso que response.json().age y similares no funcionarán. Debe esperar antes de leer la propiedad.
Alternativamente, coloque el resultado analizado en una variable primero:
// … const result = await response.json(); console.log(result.age); // …