如何迭代列表并从中创建一个json数组?

时间:2012-02-20 13:02:09

标签: c# asp.net-mvc-3

如何迭代列表并创建一个Json数组以从我的控制器发回?

欢迎使用伪代码!

2 个答案:

答案 0 :(得分:4)

public ActionResult Foo()
{
    var list = new List<string>();
    list.Add("foo");
    list.Add("bar");

    return Json(list, JsonRequestBehavior.AllowGet);
}

并在客户端:

$.getJSON('@Url.Action("Foo")', function(list) {
    for (var i = 0; i < list.length; i++) {
        alert(list[i]);
    }
});

如果您想将数组作为输入发送到控制器操作:

public ActionResult Foo(string[] foos)
{
    ...
}

您可以执行以下操作:

var array = [];
array.push('foo');
array.push('bar');
$.ajax({
    url: '@Url.Action("foo")',
    type: 'POST',
    contentType: 'application/json',
    data: JSON.stringify({ foos: array }), 
    success: function(result) {

    }
});

答案 1 :(得分:0)

JSONArray array = new JSONArray();
JSONObject object = new JSONObject();

for(int i=0;i<size;i++)
{
//To create an array of objects
String name = <get name from your list>
object.put(key name, key value);       // example: object.put("name","whatever string you want");

//To create an array of arrays
JSONArray subarray = new JSONArray();
subarray.add(name);

//Put your object or subarray into the main JSONArray
array.add(object);
// OR
array.add(subarray);
}

现在将您的JSONArray从您的控制器发送到您的网页,如下所示:

            request.setAttribute("jsonarray",array);
        RequestDispatcher rd = request.getRequestDispatcher("main.jsp");
        rd.forward(request, response);

然后在您的网页中使用javscript

var jsArray  = eval('(' + '<%=request.getAttribute("jsonarray")%>' + ')');

您现在可以在javascript中迭代它:

    for(var i=0;i<jsArray.length;i++)
{
  var getName = jsArray[i];
}

希望这有帮助!