首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >循环遍历JSON数据

循环遍历JSON数据
EN

Stack Overflow用户
提问于 2012-09-18 10:12:58
回答 2查看 1.5K关注 0票数 0

data.d =

代码语言:javascript
运行
复制
[
  {
    "NodeId": "BK01",
    "NodeName": "Books",
    "ParentId": null,
    "Likes": null
  },
  {
    "NodeId": "CO01",
    "NodeName": "Computers",
    "ParentId": null,
    "Likes": null
  },
  {
    "NodeId": "GA01",
    "NodeName": "Gaming",
    "ParentId": null,
    "Likes": null
  },
  {
    "NodeId": "MO01",
    "NodeName": "Mobile & Accessories",
    "ParentId": null,
    "Likes": null
  }
]

WebService

代码语言:javascript
运行
复制
 <WebMethod()> _
    Public Shared Function getCategories() As String
        Dim details As New List(Of Nodes)()
        Dim index As New Default2
        Using ds As Data.DataSet = index.db.ExecuteDataSet(CommandType.Text, "SELECT NodeID,NodeName FROM Nodes WHERE ParentID='1'")
            Dim JaggedArray As String()() = New String(ds.Tables(0).Rows.Count - 1)() {}
            Dim i As Integer = 0
            For Each rs As DataRow In ds.Tables(0).Rows
                Dim node As New Nodes()
                node.NodeId = rs("NodeId").ToString
                node.NodeName = rs("NodeName").ToString
                details.Add(node)
                'JaggedArray(i) = New String() {rs("NodeName").ToString(), rs("NodeID").ToString()}
                i = i + 1
            Next
        End Using
        Dim js As New JavaScriptSerializer()
        Dim strJSON As String = js.Serialize(details.ToArray)
        Return strJSON

    End Function

AJAX调用

代码语言:javascript
运行
复制
<script src="js/jquery-1.7.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function() {
        //alert("!!!");
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "Default2.aspx/getCategories",
            data: "{}",
            dataType: "json",
            success: function(data) {
                var nodes = eval(data);
                alert(data.NodeName);
                $('#output').text(data.d);
                $.each(data.d, function(index, node) {
                $('#output').append('<p><strong>' + node.NodeName + ' ' +
                            node.NodeID + '</strong><br /> ');
                });
            },
            error: function(result) {
                alert("Error");
            }
        });
    });
</script>

如何通过data.d循环获得值?data.d.length给了我219,但应该是4?我做错什么了??

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-18 10:17:24

您可以使用$.map作为E.G。

代码语言:javascript
运行
复制
$(document).ready(function () {
    $.ajax({
        type: "POST",
        url: "/--service--",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: false,
        success: function (data) {
            $.map(data.d, function (item) {
                $("#name").append('<option value=' + item.ID+ '>' + item.Name + '</option>');
            });
        }
    });
});
票数 1
EN

Stack Overflow用户

发布于 2012-09-18 10:25:28

您可以使用以下方法循环遍历data.d:

代码语言:javascript
运行
复制
$.each(data.d, function(index, Value)
{
      //
});

但是,由于您正在返回一个字符串,所以我认为它不会对您起作用,您最好返回一个字符串数组。=======================EDIT====================创建了一个新的类,如:

代码语言:javascript
运行
复制
public class MyClass
{
      public MyNodes as Nodes()
}

在您的getCategories代码中,可以这样做:

代码语言:javascript
运行
复制
Dim details As New List(Of Nodes)()
    Dim index As New Default2
Dim myObj As New MyClass
    Using ds As Data.DataSet = index.db.ExecuteDataSet(CommandType.Text, "SELECT NodeID,NodeName FROM Nodes WHERE ParentID='1'")
        Dim JaggedArray As String()() = New String(ds.Tables(0).Rows.Count - 1)() {}
        Dim i As Integer = 0
        For Each rs As DataRow In ds.Tables(0).Rows
            Dim node As New Nodes()
            node.NodeId = rs("NodeId").ToString
            node.NodeName = rs("NodeName").ToString
myObj.Add(node)
            'details.Add(node)
            'JaggedArray(i) = New String() {rs("NodeName").ToString(), rs("NodeID").ToString()}
            i = i + 1
        Next
    End Using
    Dim js As New JavaScriptSerializer()
    Dim strJSON As String = js.Serialize(myObj)
    Return strJSON

我是C#的人,而不是VB.NET的人,所以在代码中可能有一些问题,我相信您可以检查。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12474885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档