Как преобразовать строку JSON в объект JavaScript в jQuery? - PullRequest
32 голосов
/ 28 мая 2009

У меня есть строка в моей базе данных, которую я хочу вставить на свою страницу и преобразовать в объект 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?

Ответы [ 7 ]

64 голосов
/ 27 июля 2010

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

jQuery.parseJSON

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

7 голосов
/ 30 мая 2009

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

Сценарий можно найти здесь .

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

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

с использованием скрипта json2.js:

var obj = JSON.parse(json);
2 голосов
/ 28 мая 2009

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

var obj = eval (jsonString);

1 голос
/ 28 мая 2009

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

1 голос
/ 28 мая 2009

Взгляните на 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
0 голосов
/ 30 мая 2009

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

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

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

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

0 голосов
/ 28 мая 2009

использование

jQuery.getJSON(url, data, callback)

или передать "JSON" как type<code> parameter: <pre>jQuery.get( url, data, callback, type )

То же относится и к:

jQuery.post( url, data, callback, type )</code>

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

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