Для анализа JSON, я считаю, что лучший способ - использовать встроенную поддержку JSON в браузерах.
Я искал хороший способ анализа JSON в тех случаях, когда встроенная поддержка JSON недоступна.
Когда я посмотрел на код в https://github.com/douglascrockford/JSON-js/blob/master/json2.js,, я понял, что сначала он проверяет, являются ли данные действительными JSON, используя регулярное выражение:
if (/^[\],:{}\s]*$/.
test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
replace(/(?:^|:|,)(?:\s*\[)+/g, '')))
, а затем применяет eval ().
jQuery выполняет $ .parseJSON (), сначала 1-й, используя приведенное выше регулярное выражение, чтобы проверить, является ли он действительным JSON, и затем применяет:
return window.JSON && window.JSON.parse ?
window.JSON.parse( data ) :
(new Function("return " + data))();
если доступен нативный JSON, он использует это, в противном случае он использует "Новая функция ".
Больше нигде я не нашел об использовании объектов функций для анализа JSON.Какой метод лучше - использовать eval () или объект функции?Можете ли вы объяснить, что именно выполняет (new Function("return " + data))();
?