VDS за 300р от нашего партнера SpaceWeb
[61]
16 Апр 2012, 16:25

JSON в старых браузерах

Привет!

А как быть с JSON в старых браузерах? Мне нужно парсить строку формата JSON в объект JavaScript.

Можно делать так:

var json_str = '{"firstName": "Генадий", "lastName": "Архипов"}'; var obj = eval(json_str );

Но это абсолютно не безопасный вариант. В современных браузерах есть объект window.JSON и метод window.JSON.parse(data). Но в старых то браузерах его нету. Как быть тут?

#javascript

Комментарии (1)
grom 16.04.2012 17:44

Используйте такую функцию:

function parseJSON(data)
{
if(typeof data !== "string" || !data || data=='') return null;

// убираем начальные и конечные пробелы
data = data.replace(/^\s+/, '');
data = data.replace(/\s+$/, '');

// Если браузер поддерживает JSON.parse
if(window.JSON && window.JSON.parse)
{
return window.JSON.parse(data);
}

// Если браузер НЕ поддерживает JSON.parse проверяем руками
var rvalidchars = /^[\],:{}\s]*$/;
var rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g;
var rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g;
var rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g;

if(rvalidchars.test(data.replace(rvalidescape, "@").replace(rvalidtokens, "]").replace(rvalidbraces, "")))
{
return (new Function( "return " + data ))();
}
}

Или JQuery, там похожий механизм.
+1

Добавить комментарий

Войдите, чтобы написать о чем-нибудь...
Вход Регистрация
Web.onRails
Здесь вы можете спросить или написать обо всём, что касается Веб-разработки.
написать о чем-нибудь...
Метки:
Лучшее
[52]
16 Окт 2011, 15:38
Вывести все элементы POST
[просмотров 14079]
[74]
31 мая 2011, 11:48
Python проверка существования переменной
[просмотров 9736]
[4]
10 Окт 2018, 15:33
Как запретить просмотр сайта по IP?
[просмотров 8995]
[100]
19 Дек 2014, 16:16
User-agent для Internet Explorer 11
[просмотров 8860]
[315]
11 Авг 2011, 00:21
Спецификация HTML5 от W3C
[просмотров 7363]
[125]
21 Июл 2011, 14:04
Python Imaging Library (PIL)
[просмотров 7093]
[315]
16 Июл 2011, 20:03
Python работа с MySQL
[просмотров 5135]

Вести с Хабра