Я видел ссылки на некоторые браузеры, изначально поддерживающие синтаксический анализ / сериализацию JSON объектов безопасно и эффективно через window.JSON
Object, но подробностей найти трудно. Может ли кто-нибудь указать в правильном направлении? Какие методы предоставляет этот объект? В каких браузерах он поддерживается?
javascript
json
browser
левик
источник
источник
Ответы:
Все современные браузеры поддерживают собственное кодирование / декодирование JSON (Internet Explorer 8+, Firefox 3.1+, Safari 4+ и Chrome 3+). По сути,
JSON.parse(str)
будет анализировать строку JSONstr
и возвращать объект, аJSON.stringify(obj)
также возвращать JSON-представление объектаobj
.Подробнее в статье MDN .
источник
eval()
строки JSON, потому что вы будете изобретать колесо и, скорее всего, ошибетесь.jQuery-1.7.1.js - 555 строк ...
parseJSON: function( data ) { if ( typeof data !== "string" || !data ) { return null; } // Make sure leading/trailing whitespace is removed (IE can't handle it) data = jQuery.trim( data ); // Attempt to parse using the native JSON parser first if ( window.JSON && window.JSON.parse ) { return window.JSON.parse( data ); } // Make sure the incoming data is actual JSON // Logic borrowed from http://json.org/json2.js if ( rvalidchars.test( data.replace( rvalidescape, "@" ) .replace( rvalidtokens, "]" ) .replace( rvalidbraces, "")) ) { return ( new Function( "return " + data ) )(); } jQuery.error( "Invalid JSON: " + data ); } rvalidchars = /^[\],:{}\s]*$/, rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
источник
Преимущество использования json2.js заключается в том, что он устанавливает парсер только в том случае, если в браузере его еще нет. Вы можете поддерживать совместимость со старыми браузерами, но использовать собственный парсер JSON (который более безопасен и быстрее), если он доступен.
Браузеры с собственным JSON:
ГРАММ.
источник
[продолжение комментария musicfreak ]
Если вы используете jQuery, используйте parseJSON
var obj = jQuery.parseJSON(data)
Внутренне он проверяет, поддерживает ли браузер .JSON.parse, и (если доступно) вызывает собственный window.JSON.parse.
Если нет, сам разбирается.
источник
Для пользы всех, кто сталкивается с этой веткой - последний полный список браузеров, поддерживающих объект JSON, смотрите здесь. . Краткий общий ответ - почти все браузеры, которые действительно имеют значение в 2013+ году.
источник