He guardado un archivo JSON en mi sistema local y he creado un archivo JavaScript para leer el archivo JSON e imprimir datos. Aquí está el archivo JSON:
{"resource":"A","literals":["B","C","D"]}
Digamos que esta es la ruta del archivo JSON: /Users/Documents/workspace/test.json
.
¿Podría alguien ayudarme a escribir un simple código para leer el archivo JSON e imprimir los datos en JavaScript?
javascript
json
usuario2864315
fuente
fuente
Respuestas:
No puede realizar una llamada AJAX a un recurso local ya que la solicitud se realiza mediante HTTP.
Una solución alternativa es ejecutar un servidor web local, servir el archivo y realizar la llamada AJAX a localhost.
En términos de ayudarlo a escribir código para leer JSON, debe leer la documentación para
jQuery.getJSON()
:http://api.jquery.com/jQuery.getJSON/
fuente
python -m SimpleHTTPServer 8888
y abrirlohttp://localhost:8888/
en su navegador (Windows o Mac).8888
es el puerto y se puede cambiar.python -m http.server 8888
Para leer el archivo JSON local externo (data.json) usando javascript, primero cree su archivo data.json:
Mencione la ruta del archivo json en la fuente del script junto con el archivo javascript.
Obtener el objeto del archivo json
Para más información, consulte esta referencia .
fuente
data.json
arriba no pasa la validación: jsonlint.com porque es realmente JavaScript. Descartar las comillas simples de ajuste lo convertiría en JavaScript puro.JSON.parse
no es compatible con algunos navegadores antiguos (mirando su IE). Consulte la tabla de compatibilidad del navegador de MDN parawindow.JSON
.data
. Si eliminó las comillas de cadena alrededor del jsondata.json
, ni siquiera necesitaría usarlasJSON.parse
. La pregunta es cómo cargar un archivo JSON, no cómo codificar JSON en otro archivo javascript y luego cargarlo.JSON.parse(window.data);
proporcionaría una mejor informaciónscope
de ladata
variable.La carga de un
.json
archivo desde el disco duro es una operación asincrónica y, por lo tanto, debe especificar una función de devolución de llamada para ejecutar después de cargar el archivo.Esta función también funciona para cargar archivos
.html
o.txt
, anulando el parámetro de tipo mime a"text/html"
,"text/plain"
etc.fuente
rawFile.responseType = 'json';
para que analice el objeto json automáticamente, solo asegúrese de pasarlo enrawFile.response
lugar derawFile.responseText
la devolución de llamada.Cuando esté en Node.js o cuando use require.js en el navegador , simplemente puede hacer:
Tenga en cuenta: el archivo se carga una vez, las llamadas posteriores utilizarán el caché.
fuente
'utf8'
argumento dereadFileSync
: esto hace que devuelva no unBuffer
(aunqueJSON.parse
puede manejarlo), sino una cadena. Estoy creando un servidor para ver el resultado ...localhost:3030/get/33
, le dará los detalles relacionados con esa identificación ... y también leerá por nombre. Mi archivo json tiene nombres similares con este código, puede obtener detalles de un nombre ... y no imprimió todos los nombres similaresfuente
Usar la API Fetch es la solución más fácil:
Funciona perfectamente en Firefox, pero en Chrome debe personalizar la configuración de seguridad.
fuente
Como muchas personas mencionaron antes, esto no funciona con una llamada AJAX. Sin embargo, hay una forma de evitarlo. Usando el elemento de entrada, puede seleccionar su archivo.
El archivo seleccionado (.json) debe tener esta estructura:
Luego puede leer el archivo usando JS con FileReader ():
fuente
Dependiendo de su navegador, puede acceder a sus archivos locales. Pero esto puede no funcionar para todos los usuarios de su aplicación.
Para hacer esto, puede probar las instrucciones desde aquí: http://www.html5rocks.com/en/tutorials/file/dndfiles/
Una vez que se carga su archivo, puede recuperar los datos usando:
fuente
Si está utilizando archivos locales, ¿por qué no empacar los datos como un objeto js?
data.js
Sin XMLHttpRequests , sin análisis, solo use
MyData.resource
directamentefuente
Muy simple.
Cambie el nombre de su archivo json a ".js" en lugar de ".json".
Así que sigue tu código normalmente.
Sin embargo, solo para información, el contenido de mi json es como el recorte a continuación.
fuente
Puede importarlo como el módulo ES6;
fuente
Simplemente use $ .getJSON y luego $ .each para iterar el par Clave / valor. Ejemplo de contenido para el archivo JSON y el código funcional:
fuente
Puede usar el método XMLHttpRequest ():
Puede ver la respuesta de myObj usando la instrucción console.log (comentado).
Si conoce AngularJS, puede usar $ http:
Si tiene el archivo en una carpeta diferente, mencione la ruta completa en lugar del nombre del archivo.
fuente
Como tiene una aplicación web, puede tener un cliente y un servidor.
Si solo tiene su navegador y desea leer un archivo local de un javascript que se ejecuta en su navegador, eso significa que solo tiene un cliente. Por razones de seguridad, el navegador no debe permitirle hacer tal cosa.
Sin embargo, como lauhub explicó anteriormente, esto parece funcionar:
http://www.html5rocks.com/en/tutorials/file/dndfiles/
Otra solución es configurar en algún lugar de su máquina un servidor web (pequeño en Windows o mono en Linux) y con una biblioteca XMLHttpRequest o D3, solicitar el archivo del servidor y leerlo. El servidor buscará el archivo del sistema de archivos local y se lo servirá a través de la web.
fuente
Me gustó lo que Stano / Meetar comentó anteriormente. Lo uso para leer archivos .json. He expandido sus ejemplos usando Promise. Aquí está el saqueador de lo mismo. https://plnkr.co/edit/PaNhe1XizWZ7C0r3ZVQx?p=preview
La lectura de JSON se puede mover a otra función, para DRY; pero el ejemplo aquí es más de mostrar cómo usar las promesas.
fuente
Debe crear una nueva instancia XMLHttpRequest y cargar el contenido del archivo json.
Este consejo me funciona ( https://codepen.io/KryptoniteDove/post/load-json-file-locally-using-pure-javascript ):
fuente
Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https
. Puede usar json2js para convertir cualquier archivo JSON a .JS.Una solución simple es colocar su archivo JSON dentro de un servidor que se ejecuta localmente. para eso desde la terminal, vaya a la carpeta de su proyecto e inicie el servidor local en algún número de puerto, por ejemplo, 8181
Luego, vaya a http: // localhost: 8181 / debería mostrar todos sus archivos, incluido el JSON. Recuerde instalar Python si aún no lo tiene.
fuente
Si pudiera ejecutar un servidor web local (como Chris P sugirió anteriormente), y si pudiera usar jQuery, podría intentar http://api.jquery.com/jQuery.getJSON/
fuente
Puede usar D3 para manejar la devolución de llamada y cargar el archivo JSON local
data.json
, de la siguiente manera:fuente
Tomé la excelente respuesta de Stano y la envolví en una promesa. Esto podría ser útil si no tiene una opción como nodo o paquete web a la que recurrir para cargar un archivo json desde el sistema de archivos:
Puedes llamarlo así:
fuente
Entonces, si planea utilizar "Apache Tomcat" para alojar su archivo JSON,
1> Después de iniciar el servidor, verifique que su Apache Tomcat esté en funcionamiento yendo a esta url: "localhost: 8080" -
2> A continuación, vaya a carpeta "webapps" - "C: \ Archivos de programa \ Apache Software Foundation \ Tomcat 8.5 \ webapps". Y, cree una carpeta de proyecto o copie su carpeta de proyecto.
3> Pegue su archivo json allí.
4> Y eso es todo. ¡Estás listo! Simplemente vaya a - " http: // localhost: 8080 / $ project_name $ / $ jsonFile_name $ .json"
fuente