Встроенная в браузер поддержка JSON (window.JSON) - PullRequest
91 голосов
/ 21 мая 2009

Я видел ссылки на некоторые браузеры, изначально поддерживающие JSON-анализ / сериализацию объектов безопасно и эффективно с помощью объекта window.JSON, но детали трудно найти. Кто-нибудь может указать в правильном направлении? Какие методы предоставляет этот объект? В каких браузерах он поддерживается?

Ответы [ 5 ]

109 голосов
/ 21 мая 2009

Все современные браузеры поддерживают стандартное кодирование / декодирование JSON (Internet Explorer 8+, Firefox 3.1+, Safari 4+ и Chrome 3+). По сути, JSON.parse(str) будет анализировать строку JSON в str и возвращать объект, а JSON.stringify(obj) будет возвращать представление JSON объекта obj.

Подробнее о статье MDN .

30 голосов
/ 12 марта 2012

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,
12 голосов
/ 05 августа 2011

Преимущество использования json2.js состоит в том, что он устанавливает парсер только в том случае, если в браузере его еще нет. Вы можете поддерживать совместимость со старыми браузерами, но использовать собственный анализатор JSON (более безопасный и быстрый), если он доступен.

Браузеры с собственным JSON:

  • IE8 +
  • Firefox 3.1 +
  • Safari 4.0.3 +
  • Опера 10,5 +

G.

10 голосов
/ 21 октября 2011

[продолжая musicfreak комментарий]

Если вы используете jQuery, используйте parseJSON

var obj = jQuery.parseJSON(data)

Внутренне он проверяет, поддерживает ли браузер .JSON.parse, и (если доступно) вызывает собственное window.JSON.parse.

Если нет, разбирает себя.

8 голосов
/ 18 ноября 2013

Для всех, кто сталкивается с этим потоком - для полного, окончательного списка браузеров, поддерживающих объект JSON , посмотрите здесь. . Краткий общий ответ - почти все браузеры, которые действительно имеют значение в 2013 году +.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...