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

时间:2016-07-13 09:17:39

标签: javascript jquery json ajax

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

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

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

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

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

3 个答案:

答案 0 :(得分:6)

您可以使用JSON.stringify(countries);

var c = {
   countries: countries
}
$.ajax({
    type: "POST",
    url: "Concessions.aspx/GetConcessions",
    data: JSON.stringify(c),
    contentType: "application/json"
...

请注意,您需要指定contentType;否则,假定为URI编码。

答案 1 :(得分:1)

您可以使用JSON.stringify()将任何对象转换为JSON字符串:

var countries = new Array();
countries[0] = 'ga';
countries[1] = 'cd';
var json = JSON.stringify({ countries: countries}); // = '{"countries":["ga","cd"]}'

// or more simply:
var countries = [ 'ga', 'cd' ];
var json = JSON.stringify({ countries: countries}); // = '{"countries":["ga","cd"]}'

但是,您应该注意,为data $.ajax提供一个对象的$.ajax({ type: "POST", url: "Concessions.aspx/GetConcessions", data: { 'countries': countries } }); 属性是更好的做法,因为jQuery将为您创建JSON并同时转义任何对象无效字符并执行任何所需的编码。试试这个:

{{1}}

答案 2 :(得分:0)

您可以使用JSON.parse()将对象转换为json

像这样 countries = JSON.parse(countries);

对象在json中转换并存储在country变量