如何将此多维关联数组转换为json?

时间:2011-06-13 16:48:51

标签: javascript jquery json asp.net-mvc-3

我有一个循环,在js中创建一个我需要转换为json的关联数组。

使用Javascript:

var guest = {};
var guests = {};

for(var i=0;i<2;i++){
  var name = GetName();
  var email = GetEmail();
  guest = { 'Email': email, 'Name': name };
  guests.push(guest);
}

循环结束会给我,说:

{
 {'Email':"bob@zyz.com", 'Name':"Mr. Bob"},
 {'Email':"tom@zyz.com", 'Name':"Mr. Tom"}
}

如何将此转换为JSON? (可以使用小jquery插件)

我需要将这个json数组传递给我的MVC 3控制器:

[HttpPost]
public ActionResult AddGuests(List<SelectedGuest> guests){

}

public class SelectedGuest
{
    public string Email { get; set; }
    public string Name { get; set; }
}

感谢阅读。

2 个答案:

答案 0 :(得分:3)

如果要处理数组,则需要使用方括号。在javascript中实际上有两个工件:对象({})和对象数组([]),区别非常重要:

var guest = { };
var guests = [ ];

for(var i = 0; i < 2; i++) {
    var name = GetName();
    var email = GetEmail();
    guest = { 'Email': email, 'Name': name };
    guests.push(guest);
}

现在我们已经修复了你的javascript,让我们使用AJAX将这个guests数组发送到AddGuests控制器操作:

$.ajax({
    url: '/SomeController/AddGuests',
    data: JSON.stringify(guests),
    type: 'POST',
    contentType: 'application/json', // <-- Make sure to set the proper content type
    success: function(result) {
        // TODO: handle the results of the controller action
    }
});

此处显示的JSON.stringify方法是在大多数现代浏览器中实现的,但对于较旧的浏览器,您可能希望包含following script

最后一句话:

永远不要在这样的javascript中对网址进行硬编码:

url: '/SomeController/AddGuests'

在处理网址时,始终在ASP.NET MVC中使用Url帮助程序,如下所示:

url: '@Url.Action("AddGuests", "SomeController")'

答案 1 :(得分:1)

for for call call JSON.stringify();

之后
var json = JSON.stringify(guests);