Подтвердить что ты не робот

Как преобразовать строку JSON в объект JavaScript в jQuery?

У меня есть строка в моем db, которую я хочу вытащить на свою страницу и преобразовать в объект JavaScript.

[
{id: 1,title: "Long Event",
       start: new Date(2009, 5, 6, 14, 0),end: new Date(2009, 5, 11)},
{id: 2,title: "Repeating Event",
       start: new Date(2009, 5, 2)},
{id: 3,title: "Meeting",
       start: new Date(2009, 5, 20, 9, 0)},
{id: 4,title: "Click for Facebook",
       start: new Date(2009, 5, 27, 16),end: new Date(2009, 5, 29),
       url: "http://facebook.com/"}
]

Как это сделать с помощью jQuery?

4b9b3361

Ответ 1

Как и в jQuery 1.4.1, вы можете сделать это изначально

jQuery.parseJSON

Смотрите документация jQuery.

Ответ 2

"Официальный" json2.js script включает в себя 2 метода: один, который будет безопасно анализировать любую строку JSON для объекта (JSON.parse) и тот, который преобразует объект в строку JSON (JSON.stringify)

script можно найти здесь.

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

var obj = (new Function("return " + json))();

используя json2.js script:

var obj = JSON.parse(json);

Ответ 3

как насчет eval()?

var obj = eval (jsonString);

Ответ 4

Взгляните на JQuery-json плагин

var thing = {plugin: 'jquery-json', version: 1.3};

var encoded = $.toJSON(thing);              //'{"plugin": "jquery-json", "version": 1.3}'
var name = $.evalJSON(encoded).plugin;      //"jquery-json"
var version = $.evalJSON(encoded).version;  // 1.3

Ответ 5

Вы просмотрели плагин jquery-json?

Ответ 6

использовать

jQuery.getJSON(url, data, callback)

или передать "json" как type parameter:

jQuery.get( url, data, callback, type )

то же самое относится к:

jQuery.post( url, data, callback, type )

* все, если вы извлекаете "строку" из запроса ajax

Ответ 7

Пока вы можете использовать команду eval, сначала вам нужно проверить ее на предмет безопасности. Я использую:

var data = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.
           test(source.replace(/"(\\.|[^"\\])*"/g, '')))     
           && eval('(' + source + ')');

Это должно работать (оно немного отрегулировано от оригинала). Ключевым моментом является то, что строка JSON проверяется для предотвращения проскакивания функций и другого исполняемого кода. (Первое регулярное выражение - важный бит).

Тем не менее, плагин JSON очень хорош.