协慌网

登录 贡献 社区

在 jQuery 中序列化为 JSON

我需要将对象序列化为 JSON。我正在使用 jQuery。是否有 “标准” 方法来做到这一点?

我的具体情况:我有一个定义如下所示的数组:

var countries = new Array();
countries[0] = 'ga';
countries[1] = 'cd';
...

我需要将其转换为字符串以传递给$.ajax()如下所示:

$.ajax({
    type: "POST",
    url: "Concessions.aspx/GetConcessions",
    data: "{'countries':['ga','cd']}",
...

答案

JSON-js - JavaScript 中的 JSON。

要将对象转换为字符串,请使用JSON.stringify

var json_text = JSON.stringify(your_object, null, 2);

要将 JSON 字符串转换为对象,请使用JSON.parse

var your_object = JSON.parse(json_text);

它最近由John Resig推荐:

... 请开始将使用 JSON 的应用程序迁移到 Crockford 的 json2.js。它与 ECMAScript 5 规范完全兼容,如果存在本机(更快!)实现,则会优雅地降级。

事实上,我刚刚在 jQuery 中进行了一次更改,它使用了 JSON.parse 方法,如果它存在,现在已经完全指定了。

我倾向于相信他在 JavaScript 问题上所说的话:)

较新的浏览器本身支持JSON 对象 。 Crockford 的 JSON 库的当前版本将仅定义JSON.stringifyJSON.parse如果它们尚未定义),则保留任何浏览器本机实现。

我一直在使用jquery-json 6 个月,效果很好。它使用起来非常简单:

var myObj = {foo: "bar", "baz": "wockaflockafliz"};
$.toJSON(myObj);

// Result: {"foo":"bar","baz":"wockaflockafliz"}

适用于 IE8 +

不需要 jQuery,使用:

JSON.stringify(countries);