Leer archivos JSON desde Angular 10

sandymarmolejo

Sandy Marmolejo

Posted on October 5, 2020

Leer archivos JSON desde Angular 10

Hola,

Hay veces que necesitamos leer un archivo JSON para leer datos o un archivo de configuración. Para hacer esto tenemos que hacer lo siguiente:

Imaginemos que tenemos el siguiente JSON:

{
    "Menu": [
      {
        "id": "b1",
        "name": "Café americano",
        "price": 5,
        "count": 1,
        "type": "breakfast",
        "subType": "",
        "image": "/assets/images/coffee.png"
      },
      {
        "id": "b2",
        "name": "Café con leche",
        "price": 7,
        "count": 1,
        "type": "breakfast",
        "subType": "",
        "image": "/assets/images/latte.png"
      }
    ]
}
Enter fullscreen mode Exit fullscreen mode

Lo único que tenemos que añadir es la siguiente función en tu componente o servicio

import * as data from '../../assets/menu.json'; //aqui es la ruta donde importas el archivo json
...
...
...
  getJsonContent()
    return (data as any); // aqui obtenemos el JSON completo
  }

  getMenuJsonContent()
    return (data as any).Menu; // aqui obtenemos el array de elementos de la propiedad Menu
  }
Enter fullscreen mode Exit fullscreen mode

Mapeando el contenido a un array de clases

Si necesitamos mapear los datos del archivo JSON a una clase de nuestro modelo, podemos hacer lo siguiente:

  • Creamos una clase con la misma estructura que tiene el JSON que queremos mapear:
export interface Product {
    id: string;
    name: string;
    price: number;
    count: number;
    type: string;
    subType: string;
    image: string
}
Enter fullscreen mode Exit fullscreen mode
  • Añadimos una función getProducts(): Observable<Array<Product>> donde indicamos que retornará un Array de Product (IMPORTANTE: Para que funcione, el array debe tener la misma estructura que la clase Product)
import { Observable } from 'rxjs';
import * as data from '../../assets/menu.json';
import { Product } from '../models/product';
...
...
...
 getProducts(): Observable<Array<Product>> {
    return (data as any).Menu;
  }
Enter fullscreen mode Exit fullscreen mode

Y con esto ya tenemos un array de Products desde el JSON. Como ven, ya se puede leer un archivo JSON desde Angular 10, espero les sirva, hasta la próxima :)

💖 💪 🙅 🚩
sandymarmolejo
Sandy Marmolejo

Posted on October 5, 2020

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Leer archivos JSON desde Angular 10
angular Leer archivos JSON desde Angular 10

October 5, 2020