JSON.parse по сравнению с оценкой ()

Я использовал JavaService прежде с хорошим успехом. Это не было обновлено за несколько лет, но было симпатичным горным телом назад, когда я использовал его.

92
задан totymedli 20 September 2013 в 15:01
поделиться

5 ответов

Вы более уязвимы для атак , если используете eval : JSON - это подмножество Javascript, а json.parse просто анализирует JSON, тогда как eval оставит дверь открытой для всех выражений JS.

109
ответ дан 24 November 2019 в 06:30
поделиться

JSON - это всего лишь подмножество JavaScript. Но eval оценивает весь язык JavaScript, а не только подмножество JSON.

4
ответ дан 24 November 2019 в 06:30
поделиться

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

Кроме того, синтаксический анализ JSON принимает дополнительный параметр, reviver, который позволяет вам указать, как работать с определенными значениями, такими как дата и время (дополнительная информация и пример во встроенной документации здесь )

9
ответ дан 24 November 2019 в 06:30
поделиться

Не все браузеры имеют встроенную поддержку JSON, поэтому будут случаи, когда вам нужно использовать eval () в строку JSON. Используйте парсер JSON из http://json.org , так как он справится со всем намного проще для вас.

Eval () - зло, но против некоторых браузеров это необходимое зло, но где вы можно этого избежать, сделайте это !!!!!

14
ответ дан 24 November 2019 в 06:30
поделиться

Все реализации JSON.parse , скорее всего, используют eval ()

JSON.parse основан на решении Дугласа Крокфорда , которое использует eval () прямо здесь, в строке 497 .

// In the third stage we use the eval function to compile the text into a
// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
// in JavaScript: it can begin a block or an object literal. We wrap the text
// in parens to eliminate the ambiguity.

j = eval('(' + text + ')');

Преимущество JSON.parse в том, что он проверяет правильность синтаксиса JSON аргумента.

37
ответ дан 24 November 2019 в 06:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: