novato completo aquí solo tratando de extraer datos anidados de una API JSON.
Digamos que quiero recuperar y almacenar en una variable el campo recibido "cantidad" del artículo número 3 (resaltado en la captura de pantalla), ¿cuál es la sintaxis correcta? (El elemento número 3 es solo un ejemplo, cuando finalmente descubrí cómo obtener los datos, mi número 3 se convertiría en una variable y lo insertaré en un bucle porque quiero extraer también el número 4, 5, 6, etc.) Si es tan amable, ¿podría ayudarme proporcionando en lugar de un número fijo una variable que pueda cambiar dentro de un ciclo?)
Cuando se recuperan los datos correctos, quiero que la cantidad recibida se muestre en Span con ID="lat".
Estoy usando la siguiente sintaxis pero no funciona en absoluto:
<span id="lat"></span> <script> const api_url = 'https://MYAPIURL.com'; async function getAmount() { const response = await fetch(api_url); const data1 = await response.json(); const { data.history_list[3].receives[0].amount } } = data1; document.getElementById('lat').textContent = data1; } getAddress(); </script>¡Muchos aprecian su ayuda, sers! Gracias :)
Intente crear otra variable para almacenar la cantidad. Su sintaxis en este momento es asignar el valor de todo el objeto json que recibió a la ruta de la cantidad del objeto de datos recibido. Esto significa que está anidando el objeto recibido nuevamente en el objeto recibido en la posición de cantidad.
También está declarando una const aquí, por lo que JavaScript probablemente pensará que está tratando de 'desestructurar' el objeto proporcionado, excepto que la sintaxis no es exactamente la adecuada para eso, así que imagino que eso también podría estar causando problemas.
<script> const api_url = 'https://MYAPIURL.com'; async function getAmount() { const response = await fetch(api_url); const data1 = await response.json(); const dataAmount= data1.history_list[3].receives[0].amount //changed line document.getElementById('lat').textContent = dataAmount; //changed line to assign the textcontent to new variable } getAddress(); </script>Puede lograrlo de esta manera simple dinámicamente.
Demostración de trabajo:
const data = { history_list: [{ receives: [{ amount: 10 }] }, { receives: [{ amount: 20 }] }, { receives: [{ amount: 30 }] }, { receives: [{ amount: 40 }] }] }; let amount = 0; data.history_list.forEach((obj) => { obj.receives.forEach((amountObj) => { amount += amountObj.amount; }); }); document.getElementById('lat').innerHTML = `Total Amount: ${amount}` <div id="lat"></div>