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

кдо

// reload page hack methode

push(uri: string) {
    this.location.replaceState(uri) // force replace and no show change
    await this.router.navigate([uri, { "refresh": (new Date).getTime() }]);
    this.location.replaceState(uri) // replace
  }
32
задан BoltClock 25 November 2011 в 06:07
поделиться

7 ответов

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

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

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

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

-1
ответ дан 27 November 2019 в 20:17
поделиться

используйте

jQuery.getJSON(url, data, callback)

или передайте "json" в качестве параметра type :

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

то же самое применимо к:

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

* all если вы получаете «строку» из запроса ajax

0
ответ дан 27 November 2019 в 20:17
поделиться

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

var obj = eval (jsonString );

2
ответ дан 27 November 2019 в 20:17
поделиться

The "official" json2.js script includes 2 methods: one that will safely parse any JSON string to an object (JSON.parse), and one that will convert an object to a JSON string (JSON.stringify)

The script can be found here.

In my post above, I suggested eval(), but there is actually a slightly better way to evaluate JSON (if you don't want to use the json2.js script):

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

using the json2.js script:

var obj = JSON.parse(json);
7
ответ дан 27 November 2019 в 20:17
поделиться

Взгляните на плагин 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
1
ответ дан 27 November 2019 в 20:17
поделиться

Did you look at the jquery-json plugin?

1
ответ дан 27 November 2019 в 20:17
поделиться

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

jQuery.parseJSON

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

64
ответ дан 27 November 2019 в 20:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: