Я сохранил файл JSON в своей локальной системе и создал файл JavaScript, чтобы прочитать файл JSON и распечатать данные. Вот файл JSON:
{"resource":"A","literals":["B","C","D"]}
Скажем , это путь к файлу JSON: /Users/Documents/workspace/test.json
.
Может ли кто-нибудь помочь мне в написании простого кода для чтения файла JSON и печати данных в JavaScript?
javascript
json
user2864315
источник
источник
Ответы:
Вы не можете сделать AJAX-вызов локальному ресурсу, так как запрос сделан с использованием HTTP.
Обходной путь - запустить локальный веб-сервер, обработать файл и выполнить AJAX-вызов localhost.
Чтобы помочь вам написать код для чтения JSON, вы должны прочитать документацию для
jQuery.getJSON()
:http://api.jquery.com/jQuery.getJSON/
источник
python -m SimpleHTTPServer 8888
и открытьhttp://localhost:8888/
в браузере (Windows или Mac).8888
порт и может быть измененpython -m http.server 8888
Для чтения внешнего локального файла JSON (data.json) с помощью javascript сначала создайте файл data.json:
Укажите путь к файлу json в источнике скрипта вместе с файлом javascript.
Получить объект из файла JSON
Для получения дополнительной информации см. Эту ссылку .
источник
data.json
выше не проходит проверку: jsonlint.com, потому что это действительно JavaScript. Отбрасывание одинарных кавычек превращает их в чистый JavaScript.JSON.parse
не поддерживается в некоторых старых браузерах (глядя на вас IE). См . Таблицу совместимости браузера MDN дляwindow.JSON
.data
. Если вы удалите строковые кавычки вокруг json,data.json
вам даже не нужно будет их использоватьJSON.parse
. Вопрос в том, как загрузить файл JSON, а не в том, как жестко закодировать JSON в другой файл javascript, а затем загрузить его.JSON.parse(window.data);
даст лучшую информациюscope
оdata
переменной.Загрузка
.json
файла с жесткого диска является асинхронной операцией, поэтому необходимо указать функцию обратного вызова, которая будет выполняться после загрузки файла.Эта функция также работает для загрузки файлов a
.html
или.txt
, переопределяя параметр mime type на"text/html"
и"text/plain"
т. Д.источник
rawFile.responseType = 'json';
так, чтобы он автоматически анализировал объект json, просто передайтеrawFile.response
вместоrawFile.responseText
обратного вызова.когда в Node.js или при использовании require.js в браузере , вы можете просто сделать:
Обратите внимание: файл загружается один раз, последующие вызовы будут использовать кеш.
источник
'utf8'
аргументreadFileSync
: это заставляет его возвращать не aBuffer
(хотяJSON.parse
может с этим справиться), а строку. Я создаю сервер, чтобы увидеть результат ...localhost:3030/get/33
он даст подробности, связанные с этим идентификатором .... и вы также читаете по имени. В моем файле json есть схожие имена с этим кодом, вы можете получить одно имя детали .... и он не распечатал все схожие именаисточник
Использование Fetch API является самым простым решением:
Он отлично работает в Firefox, но в Chrome вам нужно настроить параметры безопасности.
источник
Как уже упоминалось много людей, это не работает с использованием вызова AJAX. Тем не менее, есть способ обойти это. Используя элемент ввода, вы можете выбрать свой файл.
Выбранный файл (.json) должен иметь следующую структуру:
Затем вы можете прочитать файл, используя JS с FileReader ():
источник
В зависимости от вашего браузера, вы можете получить доступ к вашим локальным файлам. Но это может не работать для всех пользователей вашего приложения.
Для этого вы можете воспользоваться инструкциями здесь: http://www.html5rocks.com/en/tutorials/file/dndfiles/
Как только ваш файл загружен, вы можете получить данные, используя:
источник
Если вы используете локальные файлы, почему бы просто не упаковать данные как объект js?
data.js
Нет XMLHttpRequests , нет парсинга, просто используйте
MyData.resource
напрямуюисточник
Очень просто.
Переименуйте файл json в «.js» вместо «.json».
Так что следуйте вашему коду нормально.
Тем не менее, только для информации, содержание моего JSON это выглядит как фрагмент ниже.
источник
Вы можете импортировать его как модуль ES6;
источник
Просто используйте $ .getJSON, а затем $ .each для итерации пары ключ / значение. Пример содержимого файла JSON и функционального кода:
источник
Вы можете использовать метод XMLHttpRequest ():
Вы можете увидеть ответ myObj с помощью оператора console.log (закомментировано).
Если вы знаете AngularJS, вы можете использовать $ http:
Если файл находится в другой папке, укажите полный путь вместо имени файла.
источник
Поскольку у вас есть веб-приложение, у вас могут быть клиент и сервер.
Если у вас есть только ваш браузер, и вы хотите прочитать локальный файл из JavaScript, который работает в вашем браузере, это означает, что у вас есть только клиент. По соображениям безопасности браузер не должен позволять вам делать такие вещи.
Однако, как объяснял выше lauhub, похоже, что это работает:
http://www.html5rocks.com/en/tutorials/file/dndfiles/
Другое решение состоит в том, чтобы установить где-нибудь на вашей машине веб-сервер (крошечный в Windows или обезьяну в Linux) и с помощью библиотеки XMLHttpRequest или D3 запросить файл с сервера и прочитать его. Сервер извлечет файл из локальной файловой системы и предоставит его вам через Интернет.
источник
Мне понравилось то, что Stano / Meetar прокомментировал выше. Я использую его для чтения файлов .json. Я расширил их примеры, используя Promise. Вот плункер для того же. https://plnkr.co/edit/PaNhe1XizWZ7C0r3ZVQx?p=preview
Чтение JSON можно перенести в другую функцию, для DRY; но пример здесь больше демонстрирует, как использовать обещания.
источник
Вы должны создать новый экземпляр XMLHttpRequest и загрузить содержимое файла json.
Этот совет работает для меня ( https://codepen.io/KryptoniteDove/post/load-json-file-locally-using-pure-javascript ):
источник
Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https
. Вы можете использовать json2js для преобразования любого файла JSON в .JS.Один простой обходной путь - поместить ваш файл JSON на локально работающий сервер. для этого из терминала перейдите в папку вашего проекта и запустите локальный сервер на некотором номере порта, например, 8181
Затем, перейдя по адресу http: // localhost: 8181 /, должны отобразиться все ваши файлы, включая JSON. Не забудьте установить Python, если у вас его еще нет.
источник
Если бы вы могли запустить локальный веб-сервер (как предложил Крис Р выше) и если вы могли бы использовать jQuery, вы можете попробовать http://api.jquery.com/jQuery.getJSON/
источник
Вы можете использовать D3 для обработки обратного вызова и загрузить локальный файл JSON
data.json
следующим образом:источник
Я взял превосходный ответ Стано и обернул его обещанием. Это может быть полезно, если у вас нет такой опции, как узел или веб-пакет, к которому можно прибегнуть для загрузки файла json из файловой системы:
Вы можете назвать это так:
источник
Итак, если вы планируете использовать Apache Tomcat для размещения вашего JSON-файла,
1> После запуска сервера убедитесь, что ваш Apache Tomcat запущен и работает, перейдя по этому адресу: "localhost: 8080" -
2> Затем перейдите в папку «webapps» - «C: \ Program Files \ Apache Software Foundation \ Tomcat 8.5 \ webapps». И создайте папку проекта или скопируйте папку проекта.
3> Вставьте туда свой файл json.
4> И это все. Вы сделали! Просто зайдите на - " http: // localhost: 8080 / $ project_name $ / $ jsonFile_name $ .json"
источник