Estoy tratando de analizar una parte del JSON para usar con Mapbox. Aquí hay un ejemplo de un archivo JSON:
{ "time":"06:00", "location": [ { "device_id": "019823123123123", "geometry": { "type": "point", "coordinates": [ -4.19635681, 20.19492493, -12.282 ] } } ] }y aquí hay una parte del código:
async function getLocation(updateSource) { try { const response = await fetch( 'http://localhost/data.json', { method: 'GET' } ); const { coordinates // <<--- THIS IS MY PROBLEM, HOW DO I FETCH THIS PART OF JSON? // var longitude = location[1].geometry.coordinates[0] <<--- I ALSO TRIED THIS BUT NOT LUCK // var latitude = location[1].geometry.coordinates[1] <<--- I ALSO TRIED THIS BUT NOT LUCK } = await response.json() map.flyTo({ center: [longitude, latitude], // <<-- AND CONVERT IT TO THIS FORM? essential: true });¿Cómo pongo una matriz de coordenadas en longitud/latitud separadas? Gracias
Parece que está tratando de usar la asignación de desestructuración .
location es una matriz de un objeto que tiene una propiedad de geometry , que tiene una propiedad de coordenadas que es una matriz, y solo necesita los dos primeros elementos de esa matriz.
const response = { "time":"06:00", "location": [ { "device_id": "019823123123123", "geometry": { "type": "point", "coordinates": [ -4.19635681, 20.19492493, -12.282 ] } } ] } const { location: [ { geometry: { coordinates: [ lat, lng ] } } ] } = response; console.log(lat, lng);También puede guardar el resultado en una variable/constante y luego desplazarse a la matriz de coordinates :
const response = await fetch('http://localhost/data.json', {method: 'GET'}) const result = await response.json() const coordinates = result.location[0].geometry.coordinates Además, es posible que deba usar las coordinates para obtener la latitude y longitude de esta manera:
const [latitude, longitude] = coordinates; // or const latitude = coordinates[0] const loingitude = coordinates[1] la matriz de location en su respuesta puede contener varios objetos con diferentes coordinates y utilizará la función de map para hacer algo con el resultado:
const locations = result.location // get the location array const newArrayOfLocations = locations.map(location => ( { center: [location.geometry.coordinates[0], location.geometry.coordinates[1]], essential: true }) ) También puede usar la destrucción de matrices en la función de map :
locations.map(location => { const [latitude, longitude] = location.geometry.coordinates return { center: [latitude, longitude], essential: true }} )Gracias, pero ninguna de las respuestas anteriores funcionó, lo hice funcionar con el siguiente código:
const response = await fetch( 'http://localhost/data.json', { method: 'GET' }) const results = await response.json() const longitude = results.locations[0].geometry.coordinates[0] const latitude = results.locations[0].geometry.coordinates[1]