Допустим есть объект с настройками программы, который надо записать в обычный текстовый файл, чтобы потом иметь возможность полученные настройки в один клик импортировать на любой целевой машине.
Казалось бы нет проблем, просто сохраняй инфу в виде JSON и вперед... но как тогда быть, если объект кроме строк и чисел может содержать Blob? Ведь банальный JSON.stringify() здесь не поможет - это надо будет сначала написать base64-конвертер для файлов и уже только после его применения создавать JSON.
Возможно в JavaScript существуют какие-то другие нативные методы, для получения текстового (или бинарного) представления данных, кроме JSON.stringify? Я вполне допускаю, что могу не знать каких-то очевидных вещей.
В общем, как технически правильно экспортировать объект содержащий разные типы данных?
"как тогда быть, если объект кроме строк и чисел может содержать Blob?" - это довольно внезапно учитывая что вопрос начался с фразы "допустим есть объект с настройками программы". Я бы например сильно удивился если б в конфиге вдруг откуда-то возникли бинарные данные. Если вам действительно зачем-то нужно достать из браузера бинарные данные с конвертацией через JS (а звучит это очень странно и скорее всего это совсем не то что нужно), то вы вполне можете использовать replacer в JSON.stringify.
Думаю более менее адекватный ответ вы получите только после того как полностью опишете условия задачи
Kovalsky, все просто, в объекте с настройками программы (это чат бот) хранится в том числе и вся переписка, которая местами содержит медиа.
Если вдруг будем браузерного бота переносить на другой ПК, надо предусмотреть возможность экспорта и импорта всего, что там есть.
С текстовыми данными все просто, а вот с бинарными пока не знаю, как поступить. Нет, есть конечно пара вариантов на заметке, но хочу сначала почитать, что предложат другие, с вершины своего опыта)
Надим Закиров, Вообще для начала немного странно, что все данные вы храните в браузере, это в 99% случаев довольно хреновый вариант, и вот вы сами на практике нашли одну из причин. Если вас устраивают такие условия и вам действительно нужен экспорт, то мне кажется вам проще будет его реализовать архивом: по нажатию на кнопку экспорта создаёте архив в котором будет файл конфига и директория с файлами найденными в переписке, в конфиге ссылаетесь на эти файлы; при нажатии на кнопку экспорта запрашиваете у пользователя архив, парсите конфиг, загружаете файлы из архива в нужном вам формате
Kovalsky, да, вариант норм. тем более, что JavaScript технически позволяет создавать zip-архивы из блобов. Но вариант с конвертацией всех файлов в base64 представления проще, так как тогда сойдет и обычный JSON для хранения.