3
votes

Ionic lit le fichier JSON local

J'essaie de lire un fichier JSON local dans Ionic 3. J'ai enregistré le fichier JSON dans le dossier assets sous le nom csvjson.json

J'appelle la fonction suivante dans l'un des services.

getProducts () { console.log ('Inside getProducts')

myArray = this.databaseprovider.getProducts();
console.log("Returned from getProducts:" + myArray.length);

}

puis stockez le résultat dans

return this.http.get(this.apiHost)
  .map((response: Response) => {
    console.log(response);
    return response.json();
  });

Cependant, j'obtiens la sortie comme

Renvoyé par getProducts: non défini

Pouvez-vous suggérer où je me trompe?


2 commentaires

à partir du code ci-dessus, ne pas comprendre exactement ce que vous faites, expliquez-le davantage


Dans http.get on n'a plus besoin d'appeler map car il renvoie déjà un json. J'ai donc utilisé le code ci-dessous. this.http.get ('assets / csvjson.json') .subscribe (data => {data.forEach ((item) => {console.log (item); console.log ( item.Category);


3 Réponses :


0
votes

Lorsque vous l'appelez dans votre fichier Typescript de votre page, par exemple appelé yourPage.ts dans le dossier yourPage , vous pouvez accéder au fichier JSON local en important it:

yourPage.ts :

getProducts() {
 console.log(JSONdata);
}

Pour l'appeler:

import * as JSONdata from "../../assets/csvjson.json" //You can name 'JSONdata' as you want


1 commentaires

Vous devrez peut-être modifier votre configuration dactylographiée pour utiliser cette solution, voir: typescriptlang.org/docs/handbook/release-notes/... et stackoverflow.com/questions/49996456/...



2
votes

Placez le fichier nom-de-fichier > .json dans le dossier des éléments et modifiez la demande en suivant,

this.databaseprovider.getProducts().then((result)=>{
   myArray = result;
});
console.log("Returned from getProducts:" + myArray.length);

Fichier composant

public getProducts() { 
    return new Promise((resolve, reject) => {
        this._http.get("assets/<file-name>.json")
            .map((response: Response) => {
                console.log(response);
                resolve(response.json());
        });
    });
}


0 commentaires

0
votes

Le moyen le plus simple est d'utiliser la fonction fetch () comme celle-ci:

    readJsonData(){    
            fetch("../../assets/data/Parameters.json").then(res=>res.json()).then(json=>{
                console.log("OUTPUT: ", json);
                //DO YOUR STAFF
            });
    }```


0 commentaires