tp如何解析在webmethod中使用arraylist返回的Json结果?

时间:2012-05-19 13:26:45

标签: javascript jquery asp.net json

这是一个简化的代码。我有一个webservice (.asmx)如下: 我在Test class中存储了一些值,然后将class存储在arraylist中 我在两个不同的arraylists中这样做了两次。 然后将这两个数组列表存储在third arraylist.中 然后将此arraylist作为output of webmethod.

传递
 private class Test
        {
            public string Id;
            public string Name;
        }

[的webmethod]

      public ArrayList RuleReport(long RuleId)
    {
        Test t = new Test();
        t.Id = "1";
        t.Name = "a";

        ArrayList ar = new ArrayList();
        ArrayList ar2 = new ArrayList();
        ArrayList ar3 = new ArrayList();

        ar.Add(t);

t = new Test();
        t.Id = "2";
        t.Name = "b";
        ar2.Add(t);
        ar3.Add(ar);
        ar3.Add(ar2);
        return ar3;
    }

并在js文件中,我想解析他json个结果,以阅读两个Id的每个Namearraylists值。

id=1,name=a
id=2,name=b

这是我的jquery代码:

 $.ajax(
{ url: " Ajaxes/Rules.asmx/RuleReport",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    type: "POST",
    data: "{'RuleId':'79'}",
    async: false,
    success: function(data) {
    $.each(data.d, function(index, obj) {
    alert(obj.d[0].Id);// something like this. How to do it???
        })

    }, error: function() { }
});

这是火灾中的json响应:

{"d":[[{"Id":"1","Name":"a"}],[{"Id":"2","Name":"b"}]]}

如何获取每个IdName值???

1 个答案:

答案 0 :(得分:3)

使用$.each循环中的当前设置,您将获得

[{"Id":"1","Name":"a"}]

obj。正如您所看到的那样,array of object仅包含one object内容。您可以使用object访问obj[0],然后可以使用obj[0].Idobj[0].Name访问其属性

您可以使用以下代码执行此操作

$.each(data.d,function(index,obj){

       var id = obj[0].Id;
       var name = obj[0].Name;
       // do what ever you want with them
   })​

Working fiddle