Estoy conectando una API REST desde la aplicación React Native . Tengo una respuesta Json con objetos de nombre de archivo con nombres diferentes, pero todos los objetos tienen las mismas variables: nombre de archivo, mensaje y visualización.
La cantidad de objetos cambia con cada solicitud a la API (REST), los nombres de los objetos en respuesta son diferentes según las solicitudes. Pero las variables en cada objeto son las mismas que las anteriores.
La información que necesito de esta respuesta es solo el texto del nombre del archivo, pero será aceptable si obtengo una lista de objetos para poder leer los mensajes de errores.
La imagen muestra cómo se ven mis objetos.
Esta es mi solicitud de búsqueda:
const getGists = async () => { await axios .get(`https://api.github.com/gists/public?per_page=30`) .then((r) => { let n; for (n = 0; n < 30; n++) { console.log(r.data[n].files.filename); // console.log("____________________"); // console.log(r.data[n].owner.avatar_url); // console.log("____________________"); // console.log(JSON.stringify(r.data[n].files)); } }) .catch((e) => { console.log("ERROR", e); }); };¿Cómo es posible obtener cada nombre de archivo de estas solicitudes, incluso si el nombre del objeto no es el mismo en cada iteración? Gracias por la ayuda
Trabajando con el resultado de las llamadas a la API y algunas funciones de orden superior, esto funcionará bien:
const getGists = async () => { await axios .get(`https://api.github.com/gists/public?per_page=30`) .then((response) => { const myDesireResult = response.data.reduce((acc, item) => { const files = Object.values(item.files); if (files.length > 1) { files.forEach((file) => acc.push(file.filename)); } else { acc.push(files[0].filename); } return acc; }, []); console.log(myDesireResult); }) .catch((e) => { console.log("ERROR", e); }); }; en el bloque then , puede obtener el resultado de la llamada API con result.data
con la función de reduce , se iniciará el bucle a través de los datos.
dado que el objeto en los archivos tiene nombres diferentes, podemos obtener los archivos con Object.values() fácilmente.
Algunos de los archivos contienen varios elementos y la mayoría de ellos tienen solo un elemento. entonces al verificar la longitud del file podemos hacer la acción adecuada. si los archivos tienen más de un elemento, con otro simple lop, podemos recorrer esta matriz de archivos fácilmente.
Verifique el ejemplo de trabajo en codesandbox