JSON.parse и JSON.stringify функции кажутся довольно простыми, они преобразуют объект javascript в строку и наоборот, но что делать, когда данные не такие «простые». Что происходит, когда мы передаем разные типы данных функциям JSON? Давайте посмотрим:

JSON.parse:

Это может показаться немного случайным, но на самом деле он ведет себя правильно. Это не даст вам ошибки, если вывод является объектом или одним из 4 примитивных типов данных — string, number, boolean, и null. Итак, если вы не совсем уверены в источнике данных, рекомендуется всегда помещать JSON.parse в try-catch, а затем проверять возвращаемые данные.

JSON.strngify:

JSON.strngify лучше определен в документации, например здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify. Некоторые варианты поведения могут показаться вам немного странными, но они должным образом упомянуты в документе выше.

Вот суть из вышеупомянутого документа:

Вы обязательно должны прочитать это на MDN, чтобы понять больше, там очень подробно объясняется JSON.strngify.

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

Вы должны иметь в виду, как ваши данные изменятся после того, как вы конвертируете их с помощью JSON.strngify. Возможно, что если вы используете JSON.stringify для некоторых данных, а затем JSON.parse для преобразованных данных, вы можете получить немного разные результаты. Это просто потому, что есть некоторые типы, поддерживаемые Javascript, но не JSON. Так что будьте осторожны с этим.

Ваши исходные данные могут иметь такие вещи, как undefined, NaN, или функцию, и когда вы попытаетесь преобразовать их в строку, а затем снова в объект Javascript, этих значений там не будет.

Здесь, в Wizikey, мы используем эти функции для преобразования данных в строки перед сохранением их в кеше, а затем анализируем их при повторном чтении. И знание этих подробностей было полезно для предотвращения некоторых ошибок во время выполнения и помогает отлаживать их, если они проскальзывают.

Итак, чтобы ответить на вопрос — Вы действительно думаете, что JSON.parse и JSON.stringify — это так просто? Для примитивных типов данных с поддержкой JSON и простых объектов Javascript ответ — «да», но для сложных данных вам следует будьте осторожны с тем, как окончательные данные могут отличаться от исходных.