Можно ли сохранить JSON, преобразованный в строку, с помощью stringify в виде файла на вашем компьютере? если да то как?

Итак, скажем, у вас есть переменная «данные», данные затем сохраняются в формате JSON и преобразуются в строку с использованием JSON.stringify(data). Как бы вы взяли эти данные JSON и сохранили их как файл x по адресу /pc/locationX?

вы не можете контролировать, где он сохраняется через браузер

Daniel A. White 07.04.2019 03:55

Javascript, работающий в браузере, не может свободно получить доступ к компьютеру и папкам пользователя, представьте себе проблемы с безопасностью! Для хранения данных спецификация html5 предоставляет localStorage и sessionStorage. Вы можете сохранить до 10 МБ в этих хранилищах, и ваш javascript может записывать/загружать данные в любое время, даже когда пользователь закрывает браузер, а затем повторно посещает ваш сайт. Ознакомьтесь с учебным пособием здесь: taniarascia.com/how-to-use-local-storage-with-javascript

user1884155 07.04.2019 04:15
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
1
3
76
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Как упоминалось в других комментариях, вы не можете выбрать цель пути загрузки. Однако вы можете использовать следующий метод, чтобы позволить вашим пользователям загружать файл JSON. Возможно, вы уже догадались, что можете использовать следующий метод, поскольку уже знаете, что можете использовать JSON.stringify().

downloadJson(jsonObj, fileName){
  const data = 'data:text/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(jsonObj));
  const a = document.createElement('a');
  a.setAttribute('href', data);
  a.setAttribute('download', `${fileName}.json`);
  // You might need to uncomment the next line for Firefox
  // document.body.appendChild(a); 
  a.click();
  a.remove();
}

Вы также можете открыть другое окно, используя URL-адрес, поэтому вам не нужно использовать <a href = "..">

Reactgular 07.04.2019 04:39

@cgTag Да, вы абсолютно правы. Я бы написал что-то вроде a.target = '_blank';.

wentjun 07.04.2019 04:47

Однако вам следует проверить использование a.target = '_blank'; , так как некоторые браузеры, такие как Chrome и Safari, обрабатывают их по-разному.

wentjun 07.04.2019 04:48

Фантастический! еще лучше иметь загружаемый файл, большое спасибо!

ob34 07.04.2019 13:09

Как указано в комментариях выше, использование .target - это единственный способ заставить его работать, например, с firefox, используя a.setAttribute('target', '_blank').... однако он по-прежнему не работает на границе Интернета, какие-либо предложения?

ob34 07.04.2019 14:34

@ ob34, если честно, я не уверен насчет Edge. Я думаю, что window.open(url, '_blank') работает, но сначала вы должны проверить его на своей машине!

wentjun 07.04.2019 16:54

Хм .. Если нет, я действительно просматривал эту ссылку, когда искал ответы. Кто-нибудь из них действительно работает? stackoverflow.com/questions/4907843/…

wentjun 07.04.2019 16:54

localStorage.setItem('пользователь', JSON.stringify(пользователь)); Затем, чтобы получить его из хранилища и снова преобразовать в объект:

var user = JSON.parse(localStorage.getItem('user')); Если нам нужно удалить все записи магазина, мы можем просто сделать:

локальное хранилище.очистить();

Другие вопросы по теме