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?
3 Réponses :
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
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/...
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());
});
});
}
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
});
}```
à 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);