J'ai enregistré un fichier JSON dans mon système local et créé un fichier JavaScript afin de lire le fichier JSON et imprimer les données. Voici le fichier JSON:
{"resource":"A","literals":["B","C","D"]}
Disons que c'est le chemin du fichier JSON: /Users/Documents/workspace/test.json
.
Quelqu'un pourrait-il m'aider à rédiger un simple morceau de code pour lire le fichier JSON et imprimer les données en JavaScript?
javascript
json
user2864315
la source
la source
Réponses:
Tu ne pouvez pas effectuer d'appel AJAX vers une ressource locale car la demande est effectuée à l'aide de HTTP.
Une solution de contournement consiste à exécuter un serveur Web local, à servir le fichier et à appeler AJAX vers localhost.
Pour vous aider à écrire du code pour lire JSON, vous devriez lire la documentation pour
jQuery.getJSON()
:http://api.jquery.com/jQuery.getJSON/
la source
python -m SimpleHTTPServer 8888
et l'ouvrirhttp://localhost:8888/
dans votre navigateur (Windows ou Mac).8888
est le port et peut être modifié.python -m http.server 8888
Pour lire le fichier JSON local externe (data.json) à l'aide de javascript, créez d'abord votre fichier data.json:
Mentionnez le chemin du fichier json dans la source du script avec le fichier javascript.
Obtenez l'objet à partir du fichier json
Pour plus d'informations, consultez cette référence .
la source
data.json
ci-dessus ne passe pas la validation: jsonlint.com car il s'agit vraiment de JavaScript. La suppression des guillemets simples enveloppants le transformerait en JavaScript pur.JSON.parse
n'est pas pris en charge dans certains navigateurs plus anciens (en vous regardant IE). Voir le tableau de compatibilité du navigateur de MDN pourwindow.JSON
.data
. Si vous avez supprimé les guillemets autour du json dansdata.json
vous n'auriez même pas besoin de les utiliserJSON.parse
. La question est de savoir comment charger un fichier JSON et non comment coder en dur JSON dans un autre fichier javascript, puis le charger.JSON.parse(window.data);
fournirait une meilleure informationscope
de ladata
variable.Le chargement d'un
.json
fichier à partir du disque dur est une opération asynchrone et doit donc spécifier une fonction de rappel à exécuter après le chargement du fichier.Cette fonction fonctionne également pour charger un
.html
ou des.txt
fichiers, en remplaçant le paramètre de type mime par"text/html"
,"text/plain"
etc.la source
rawFile.responseType = 'json';
sorte qu'il analyse automatiquement l'objet json, assurez-vous simplement de passerrawFile.response
au lieu derawFile.responseText
le rappeler.Lorsque vous êtes dans Node.js ou lorsque vous utilisez require.js dans le navigateur , vous pouvez simplement faire:
Remarque: le fichier est chargé une fois, les appels suivants utiliseront le cache.
la source
'utf8'
argument àreadFileSync
: cela lui fait renvoyer non pas unBuffer
(bien qu'ilJSON.parse
puisse le gérer), mais une chaîne. Je crée un serveur pour voir le résultat ...localhost:3030/get/33
cela donnera les détails liés à cet identifiant .... et vous lisez également par nom. Mon fichier json a des noms simillar avec ce code, vous pouvez obtenir un nom de détail .... et il n'a pas imprimé tous les noms simillarla source
L'utilisation de l' API Fetch est la solution la plus simple:
Cela fonctionne parfaitement dans Firefox, mais dans Chrome, vous devez personnaliser les paramètres de sécurité.
la source
Comme beaucoup de personnes l'ont mentionné auparavant, cela ne fonctionne pas en utilisant un appel AJAX. Cependant, il existe un moyen de contourner cela. À l'aide de l'élément d'entrée, vous pouvez sélectionner votre fichier.
Le fichier sélectionné (.json) doit avoir cette structure:
Ensuite, vous pouvez lire le fichier en utilisant JS avec FileReader ():
la source
Selon votre navigateur, vous pouvez accéder à vos fichiers locaux. Mais cela peut ne pas fonctionner pour tous les utilisateurs de votre application.
Pour ce faire, vous pouvez essayer les instructions à partir d'ici: http://www.html5rocks.com/en/tutorials/file/dndfiles/
Une fois votre fichier chargé, vous pouvez récupérer les données en utilisant:
la source
Si vous utilisez des fichiers locaux, pourquoi ne pas simplement empaqueter les données en tant qu'objet js?
data.js
Pas de XMLHttpRequests , pas d'analyse, utilisez simplement
MyData.resource
directementla source
Très simple.
Renommez votre fichier json en ".js" au lieu de ".json".
Suivez donc votre code normalement.
Cependant, juste pour information, le contenu de mon json ressemble au snip ci-dessous.
la source
Vous pouvez l'importer comme le module ES6;
la source
Utilisez simplement $ .getJSON puis $ .each pour itérer la paire clé / valeur. Exemple de contenu pour le fichier JSON et le code fonctionnel:
la source
Vous pouvez utiliser la méthode XMLHttpRequest ():
Vous pouvez voir la réponse de myObj à l'aide de l'instruction console.log (mise en commentaire).
Si vous connaissez AngularJS, vous pouvez utiliser $ http:
Si vous avez le fichier dans un autre dossier, mentionnez le chemin complet au lieu du nom de fichier.
la source
Puisque vous avez une application Web, vous pouvez avoir un client et un serveur.
Si vous ne disposez que de votre navigateur et que vous souhaitez lire un fichier local à partir d'un javascript qui s'exécute dans votre navigateur, cela signifie que vous n'avez qu'un client. Pour des raisons de sécurité, le navigateur ne doit pas vous laisser faire une telle chose.
Cependant, comme lauhub l'a expliqué ci-dessus, cela semble fonctionner:
http://www.html5rocks.com/en/tutorials/file/dndfiles/
Une autre solution consiste à configurer quelque part dans votre machine un serveur Web (minuscule dans Windows ou Monkey sous Linux) et avec une bibliothèque XMLHttpRequest ou D3, demandez le fichier au serveur et lisez-le. Le serveur récupérera le fichier du système de fichiers local et vous le servira via le Web.
la source
J'ai aimé ce que Stano / Meetar a commenté ci-dessus. Je l'utilise pour lire des fichiers .json. J'ai développé leurs exemples en utilisant Promise. Voici le plongeur pour le même. https://plnkr.co/edit/PaNhe1XizWZ7C0r3ZVQx?p=preview
La lecture de JSON peut être déplacée dans une autre fonction, pour DRY; mais l'exemple ici est plus de montrer comment utiliser les promesses.
la source
Vous devez créer une nouvelle instance XMLHttpRequest et charger le contenu du fichier json.
Cette astuce fonctionne pour moi ( https://codepen.io/KryptoniteDove/post/load-json-file-locally-using-pure-javascript ):
la source
Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https
. Vous pouvez utiliser json2js pour convertir n'importe quel fichier JSON en .JS.Une solution de contournement simple consiste à placer votre fichier JSON dans un serveur exécuté localement. pour cela depuis le terminal, allez dans votre dossier de projet et démarrez le serveur local sur un certain numéro de port, par exemple 8181
Ensuite, la navigation vers http: // localhost: 8181 / devrait afficher tous vos fichiers, y compris le JSON. N'oubliez pas d'installer python si vous ne l'avez pas déjà fait.
la source
Si vous pouviez exécuter un serveur Web local (comme Chris P l'a suggéré ci-dessus), et si vous pouviez utiliser jQuery, vous pourriez essayer http://api.jquery.com/jQuery.getJSON/
la source
Vous pouvez utiliser D3 pour gérer le rappel et charger le fichier JSON local
data.json
, comme suit:la source
J'ai pris l' excellente réponse de Stano et l' ai enveloppée dans une promesse. Cela peut être utile si vous ne disposez pas d'une option telle que node ou webpack sur laquelle se replier pour charger un fichier json à partir du système de fichiers:
Vous pouvez l'appeler comme ceci:
la source
Donc, si vous prévoyez d'utiliser "Apache Tomcat" pour héberger votre fichier JSON,
1> Après avoir démarré le serveur, vérifiez que votre Apache Tomcat est opérationnel en allant à cette URL: "localhost: 8080" -
2> Ensuite, allez dans le dossier "webapps" - "C: \ Program Files \ Apache Software Foundation \ Tomcat 8.5 \ webapps". Et créez un dossier de projet ou copiez votre dossier de projet.
3> Collez votre fichier json là-bas.
4> Et c'est tout. Vous avez terminé! Allez simplement sur - " http: // localhost: 8080 / $ project_name $ / $ jsonFile_name $ .json"
la source