Загрузить файл JSON без сервера - PullRequest
0 голосов
/ 02 октября 2019

У меня большой файл JSON (+ -10 МБ). Я хочу загрузить этот json-файл (myjson.json) в функцию Javascript, расположенную на веб-странице HTML. Я нашел много ответов в Google, которые говорят что-то вроде «переименовать в myjson.js» и добавить var data = " yourjson", а в ваш html-файл включить myjson.js и получить доступ к переменным данным. Это не то, что я хочу. Я хочу загрузить файл JSON без переименования / изменения и без веб-сервера (без AJAX).

Кто-нибудь может мне помочь?

  $.getJSON('myjson.json', function(myjson) {...}

Не будет работать.

Включение функций css и js так просто, почему так невозможно получить доступ к локально сохраненному файлу json без веб-сервера?

Редактировать: первые строки файла json

[{"participants": ["a", "b"], "conversation": [{"sender": "b", "created_at": "2019-09-23T22:04:42.083698+00:00", "text": "xxx"},

Редактировать: добавитьмои js для разъяснения

Редактировать: Не могу, потому что я на мобильном телефоне, и форматирование кода здесь не работает

Ответы [ 3 ]

1 голос
/ 02 октября 2019

Я думаю, что вы ищете FileReader: https://developer.mozilla.org/en-US/docs/Web/API/FileReader

Если он работает, взгляните на JSON.parse (): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

0 голосов
/ 02 октября 2019

Я не совсем уверен, что вы собираетесь делать. Но вы можете сохранить свой JSON как статический файл и использовать динамический импорт для его «загрузки».

Отличный пример: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import

0 голосов
/ 02 октября 2019

К сожалению, и XHR, и Fetch API неразрывно связаны с HTTP и не могут использоваться для загрузки ресурса из относительного пути, если не задействован HTTP-сервер. Если вы загружаете страницу по URL-адресу file:, вы не сможете использовать XHR или Fetch для получения этих данных.

Для вас доступно только два метода:

  • Переключитесь на JavaScript вместо обычного JSON и используйте тег <script> (как ранее было предложено в другом ответе)

  • Разрешить пользователю перетаскиватьфайл JSON (или используйте <input type="file">), чтобы получить ссылку на файл, которую можно затем загрузить.

...