我需要将一个对象序列化为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。stringify和JSON。在调用$.ajax之前解析Json_PostData:
$.ajax({
url: post_http_site,
type: "POST",
data: JSON.parse(JSON.stringify(Json_PostData)),
cache: false,
error: function (xhr, ajaxOptions, thrownError) {
alert(" write json item, Ajax error! " + xhr.status + " error =" + thrownError + " xhr.responseText = " + xhr.responseText );
},
success: function (data) {
alert("write json item, Ajax OK");
}
});
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。解析方法,如果它存在,现在
它已经被完全指定了。
我倾向于相信他所说的JavaScript的重要性:)
所有现代浏览器(以及许多不太古老的旧浏览器)都支持JSON对象。当前版本的Crockford JSON库将只定义JSON。stringify和JSON。如果还没有定义,就解析它们,保持任何浏览器本机实现不变。