JSON.Stringify包括索引和数组长度

时间:2017-05-14 13:24:38

标签: arrays json stringify

当我使用AJAX将数组发送到控制器时,我将其转换为JSON以便于使用。

我像这样构建我的数组:

$("#selectedDropdown option").each(function () {
     selectedLanguages.push($(this).val());
});

我将其字符串化为:

data["PreferredLanguages"] = $(selectedLanguages);

然而,当它到达我的控制器时,它看起来像这样:

"PreferredLanguages":{"0":"ZA","1":"CM","2":"GH","3":"ES","length":4}} 

注意:它甚至看起来不像数组。

这可以防止我反序列化它。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

$(selectedLanguages)没有对您的数组进行字符串化。 $是jQuery对象的constructor

您可以使用global JSON object对数组进行字符串化处理:

data["PreferredLanguages"] = JSON.stringify(selectedLanguages);

通过运行此代码段,您可以看到数组和jQuery对象之间的差异:

var arr = ['a','b','c'];
var $arr = $(arr);

console.log('$arr:', JSON.stringify($arr));
console.log('$arr is an array:', Array.isArray($arr));

console.log('arr:', JSON.stringify(arr));
console.log('arr is an array:', Array.isArray(arr));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>