Salvei um arquivo JSON no meu sistema local e criei um arquivo JavaScript para ler o arquivo JSON e imprimir dados. Aqui está o arquivo JSON:
{"resource":"A","literals":["B","C","D"]}
Digamos que este é o caminho do arquivo JSON: /Users/Documents/workspace/test.json
.
Alguém poderia me ajudar a escrever um trecho de código simples para ler o arquivo JSON e imprimir os dados em JavaScript?
javascript
json
user2864315
fonte
fonte
Respostas:
Você não pode fazer uma chamada AJAX para um recurso local, pois a solicitação é feita usando HTTP.
Uma solução alternativa é executar um servidor da web local, servir o arquivo e fazer a chamada AJAX para o host local.
Em termos de ajudar a escrever código para ler JSON, você deve ler a documentação para
jQuery.getJSON()
:http://api.jquery.com/jQuery.getJSON/
fonte
python -m SimpleHTTPServer 8888
e abrirhttp://localhost:8888/
no seu navegador (Windows ou Mac).8888
é a porta e pode ser alterada.python -m http.server 8888
Para ler o arquivo JSON local externo (data.json) usando javascript, primeiro crie seu arquivo data.json:
Mencione o caminho do arquivo json na fonte do script junto com o arquivo javascript.
Obter o objeto do arquivo json
Para mais informações, consulte esta referência .
fonte
data.json
acima não passa na validação: jsonlint.com porque é realmente JavaScript. Soltar as aspas simples do invólucro o transformaria em JavaScript puro.JSON.parse
não é suportado em alguns navegadores mais antigos (olhando para o IE). Consulte a tabela Compatibilidade do Navegador da MDN parawindow.JSON
.data
. Se você removeu as aspas da string em torno do json,data.json
você nem precisaria usarJSON.parse
. A questão é como carregar um arquivo JSON e não como codificá-lo em outro arquivo javascript e, em seguida, carregá-lo.JSON.parse(window.data);
forneceria melhores informaçõesscope
sobre adata
variável.O carregamento de um
.json
arquivo do disco rígido é uma operação assíncrona e, portanto, ele precisa especificar uma função de retorno de chamada a ser executada após o carregamento do arquivo.Esta função também funciona para carregar um
.html
ou.txt
arquivos, substituindo o parâmetro mime type para"text/html"
,"text/plain"
etc.fonte
rawFile.responseType = 'json';
para que ele analise o objeto json automaticamente, apenas certifique-se de passar emrawFile.response
vez derawFile.responseText
para o retorno de chamada.Quando estiver no Node.js ou ao usar o require.js no navegador , você pode simplesmente:
Observe: o arquivo é carregado uma vez, as chamadas subseqüentes usarão o cache.
fonte
'utf8'
argumento parareadFileSync
: isso faz com que não retorne umBuffer
(emboraJSON.parse
possa lidar com isso), mas uma string. Estou criando um servidor para ver o resultado ...localhost:3030/get/33
ele fornecerá os detalhes relacionados a esse ID .... e você também lerá pelo nome. Meu arquivo json tem nomes simillar com esse código, você pode obter detalhes de um nome .... e não imprimiu todos os nomes simillarfonte
Usar a API de busca é a solução mais fácil:
Funciona perfeitamente no Firefox, mas no Chrome você precisa personalizar as configurações de segurança.
fonte
Como muitas pessoas mencionaram antes, isso não funciona usando uma chamada AJAX. No entanto, há uma maneira de contornar isso. Usando o elemento de entrada, você pode selecionar seu arquivo.
O arquivo selecionado (.json) precisa ter esta estrutura:
Então você pode ler o arquivo usando JS com FileReader ():
fonte
Dependendo do seu navegador, você pode acessar seus arquivos locais. Mas isso pode não funcionar para todos os usuários do seu aplicativo.
Para fazer isso, você pode tentar as instruções aqui: http://www.html5rocks.com/en/tutorials/file/dndfiles/
Depois que seu arquivo é carregado, você pode recuperar os dados usando:
fonte
Se você estiver usando arquivos locais, por que não apenas empacotar os dados como um objeto js?
data.js
Sem XMLHttpRequests , sem análise, basta usar
MyData.resource
diretamentefonte
Muito simples.
Renomeie seu arquivo json para ".js" em vez de ".json".
Portanto, siga seu código normalmente.
No entanto, apenas para obter informações, o conteúdo do meu json é semelhante ao snip abaixo.
fonte
Você pode importá-lo como o módulo ES6;
fonte
Basta usar $ .getJSON e, em seguida, $ .each para iterar o par Chave / valor. Exemplo de conteúdo para o arquivo JSON e o código funcional:
fonte
Você pode usar o método XMLHttpRequest ():
Você pode ver a resposta do myObj usando a instrução console.log (comentada).
Se você conhece o AngularJS, pode usar $ http:
Se você tiver o arquivo em uma pasta diferente, mencione o caminho completo em vez do nome do arquivo.
fonte
Como você possui um aplicativo Web, você pode ter um cliente e um servidor.
Se você possui apenas seu navegador e deseja ler um arquivo local de um javascript em execução no seu navegador, isso significa que você possui apenas um cliente. Por razões de segurança, o navegador não deve permitir que você faça isso.
No entanto, como o lauhub explicou acima, isso parece funcionar:
http://www.html5rocks.com/en/tutorials/file/dndfiles/
Outra solução é configurar em algum lugar da sua máquina um servidor Web (pequeno no Windows ou macaco no Linux) e com uma biblioteca XMLHttpRequest ou D3, solicitar o arquivo do servidor e lê-lo. O servidor buscará o arquivo no sistema de arquivos local e o servirá através da web.
fonte
Gostei do que Stano / Meetar comentou acima. Eu o uso para ler arquivos .json. Expandi seus exemplos usando o Promise. Aqui está o plunker para o mesmo. https://plnkr.co/edit/PaNhe1XizWZ7C0r3ZVQx?p=preview
A leitura do JSON pode ser movida para outra função, para DRY; mas o exemplo aqui é mais sobre como usar promessas.
fonte
Você deve criar uma nova instância XMLHttpRequest e carregar o conteúdo do arquivo json.
Esta dica funciona para mim ( https://codepen.io/KryptoniteDove/post/load-json-file-locally-using-pure-javascript ):
fonte
Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https
. Você pode usar o json2js para converter qualquer arquivo JSON em .JS.Uma solução simples é colocar o arquivo JSON em um servidor em execução local. para isso, no terminal, vá para a pasta do seu projeto e inicie o servidor local em algum número de porta, por exemplo, 8181
Em seguida, navegando para http: // localhost: 8181 / deve exibir todos os seus arquivos, incluindo o JSON. Lembre-se de instalar o python se você ainda não o possui.
fonte
Se você pudesse executar um servidor Web local (como Chris P sugeriu acima) e se pudesse usar o jQuery, poderia tentar http://api.jquery.com/jQuery.getJSON/
fonte
Você pode usar o D3 para manipular o retorno de chamada e carregar o arquivo JSON local
data.json
, da seguinte maneira:fonte
Peguei a excelente resposta de Stano e a envolvi em uma promessa. Isso pode ser útil se você não tiver uma opção como node ou webpack para voltar a carregar um arquivo json no sistema de arquivos:
Você pode chamar assim:
fonte
Portanto, se você planeja usar o "Apache Tomcat" para hospedar seu arquivo JSON,
1> Após iniciar o servidor, verifique se o Apache Tomcat está em funcionamento, acessando este URL: "localhost: 8080" -
2> Em seguida, vá para a pasta "webapps" - "C: \ Arquivos de Programas \ Apache Software Foundation \ Tomcat 8.5 \ webapps". E, crie uma pasta de projeto ou copie sua pasta de projeto.
3> Cole o seu arquivo json por lá.
4> E é isso. Você terminou! Basta ir para - " http: // localhost: 8080 / $ project_name $ / $ jsonFile_name $ .json"
fonte