Обратный json-stringify-безопасный

В моем приложении NextJS React я использую getInitialProps для извлечения данных, содержащих циклические ссылки. Метод getInitialProps сериализуется с использованием JSON.stringify, поэтому, когда задействованы циклические ссылки, NextJS выдает эта ошибка.

Решением является использование пакета json-stringify-безопасный, который работает следующим образом:

const stringify = require('json-stringify-safe');

const test = { a: 'hello' };
test.b = test;

const testWithoutCircularReferences = JSON.parse(stringify(test));
console.info(testWithoutCircularReferences);
// Output: {"a":"hello","b":"[Circular ~]"}

Чтобы объект можно было использовать в моем React, мне нужно отменить это, но этот широко используемый пакет, похоже, не имеет функции parse или чего-то похожего на то, чтобы отменить исходную строку, которую я сделал. Есть ли способ добиться этого?

Не с json-stringify-safe. Как следует из названия, он предоставляет только часть «stringify». Я предлагаю использовать другой модуль, предназначенный для двустороннего использования.

Jordan Running 25.03.2019 20:07

@JordanRunning Спасибо за вклад. Я попробовал несколько разных пакетов, таких как flatted, но, к сожалению, это полностью меняет структуру объекта, что не очень хорошо при использовании propTypes в React.

CaribouCode 27.03.2019 10:04

Вы нашли решение этой проблемы?

user3486427 06.03.2020 10:13
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
448
0

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