Строка JSON пропускает вложенный объект, который имеет более 3 уровней

Я хотел сохранить объект в локальном хранилище и сериализовал объект с помощью JSON.stringify. Затем некоторые внутренние атрибуты отсутствуют после разбора с использованием JSON.parse.

Я прикрепил 2 изображения ниже, чтобы увидеть изменения, и буду признателен, если кто-нибудь сможет найти лучшее решение для этого. Спасибо.

Непосредственно перед этим объект преобразуется в строку с использованием JSON.

введите здесь описание изображения

Этот объект преобразован в строку и анализируется с использованием JSON

введите здесь описание изображения

Вот как я храню и получаю данные

введите здесь описание изображения

введите здесь описание изображения


person Asbar Ali    schedule 28.12.2020    source источник
comment
Вы только что использовали JSON.stringify и JSON.parse? Можете ли вы показать нам, как вы строите и анализируете, пожалуйста   -  person Sinan Yaman    schedule 28.12.2020
comment
функции не являются допустимыми значениями в JSON. При преобразовании строки difficulty и другие функциональные клавиши игнорируются.   -  person adiga    schedule 28.12.2020
comment
о, тогда какое решение для хранения всего объекта JSON в локальном хранилище?   -  person Asbar Ali    schedule 28.12.2020
comment
@SinanYaman я обновил вопрос   -  person Asbar Ali    schedule 28.12.2020
comment
Отвечает ли это на ваш вопрос? Как сохранить функцию javascript в JSON   -  person pilchard    schedule 28.12.2020


Ответы (1)


Json.Stringify не передает функции в строковый JSON, т. е. функции не будут скопированы в строку, поскольку функции не являются допустимыми объектами JSON. В вашем случае сложность является функцией и поэтому не будет скопирована.

Вы можете включить функцию с помощью заменителя:

JSON.stringify({
   /* your object here */
}, function(key, val) {
        return (typeof val === 'function') ? '' + val : val;
});
person chingucoding    schedule 28.12.2020
comment
Вы знаете, как анализировать строковые функции? - person Asbar Ali; 29.12.2020
comment
Вы можете использовать функцию JavaScript eval и собственный оживитель. Подробнее об этом можно прочитать здесь: stackoverflow.com/questions/36517173/ - person chingucoding; 29.12.2020