Как мне на js создать json файл и сохранить туда данные, которые мне пришли с сервера?

Как мне на js создать json файл и сохранить туда данные, которые мне пришли с сервера?

Я сделал запрос на сервер и мне пришел объект с данными и нужно эти данные записать в отдельный файл json формата.


Ответы (1 шт):

Автор решения: Daniil Loban

Если устраивает появление диалога для сохранения файла то можно сделать с помощью библиотеки file-saver. В качестве аргументов функция saveAs принимает blob и имя файла. Blob cоздается через экземпляр Blob в конструктор которого передаются данные (строка) и тип файла в данном случае application/json так же иногда не лишне будет передача charset для того чтобы не поломалась кодировка. Код приведенный ниже отработает если его перенести в html файл, в снипете вероятно по причине безопасности некоторый код не отрабатывает.

JSON.stringify(json, null, 2) - форматирует json с табуляцией в 2 пробела

<html lang="ru">
  <head>
    <title></title>
    <meta charset="utf-8">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2.0.0/FileSaver.min.js" integrity="sha512-csNcFYJniKjJxRWRV1R7fvnXrycHP6qDR21mgz1ZP55xY5d+aHLfo9/FcGDQLfn2IfngbAHd8LdfsagcCqgTcQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <style></style>
  </head>
  <body>
     <script>
        fetch('https://jsonplaceholder.typicode.com/todos/1')
          .then(response => response.json())
          .then(json => saveAs(
            new Blob(
              [JSON.stringify(json, null, 2)],
              {type: "application/json;charset=" + document.characterSet}
          ), "doc.json")
        )
     </script> 
  </body>
</html>

→ Ссылка