Vb.net返回具有多种类型的json对象



我需要从web服务返回一些数据,看起来像这样:

data.page = 1
data.count = 12883
data.rows(0).id = 1
data.rows(0).name = "bob"
data.rows(1).id = 2
data.rows(1).name = "steve"
data.rows(2).id = 3
data.rows(2).name = "fred"

我不知道该怎么做。我曾经返回过简单类型和简单数组,但从来没有返回过这样的对象。

数据源是sql数据库。目标是一个javascript/ajax函数。我目前成功地返回行本身作为一个数据集,它的工作,但我需要添加计数和一对其他"父级"变量。

为了充分披露,下面是工作代码:

<WebMethod()> _
Public Function rptPendingServerRequests() As DataSet
    Dim connetionString As String
    Dim connection As SqlConnection
    Dim command As SqlCommand
    Dim adapter As New SqlDataAdapter
    Dim ds As New DataSet
    Dim sql As String
    connetionString = "..."
    sql = "SELECT usm_request.request_id, usm_request.status, usm_request.req_by_user_id " +
        "FROM usm_request " +
        "WHERE usm_request.request_id in " +
        "(SELECT distinct(usm_request.request_id) from usm_request, usm_subscription_detail WHERE usm_request.request_id = usm_subscription_detail.request_id " +
        "AND usm_subscription_detail.offering_id = 10307) ORDER BY usm_request.request_id DESC"
    connection = New SqlConnection(connetionString)
    Try
        connection.Open()
        command = New SqlCommand(sql, connection)
        adapter.SelectCommand = command
        adapter.Fill(ds)
        adapter.Dispose()
        command.Dispose()
        connection.Close()
        Return ds
    Catch ex As Exception
    End Try
End Function

我正试图用FlexiGrid来消耗它。我已经研究了几个小时了,还是一无所获。我基本上需要将以下站点的PHP转换为。net

http://code.google.com/p/flexigrid/wiki/TutorialPropertiesAndDocumentation

我认为您最好只是创建几个类并将数据从数据库移动到这些类中。例如:

Public Class MyDataClass
    Public Property Page As Integer
    Public ReadOnly Property Count As Integer
        Get
            If Me.Rows IsNot Nothing Then
                Return Me.Rows.Count
            Else
                Return 0
            End If
        End Get
    End Property
    Public Property Rows As List(Of MyDataRow)
    ' Parameterless constructor to support serialization.
    Public Sub New()
        Me.Rows = New List(Of MyDataRow)
    End Sub
    Public Sub New(wPage As Integer, ds As DataSet)
        Me.New()
        Me.Page = wPage
        For Each oRow As DataRow In ds.Tables(0).Rows
            Dim oMyRow As New MyDataRow
            oMyRow.Id = oRow("id")
            oMyRow.Name = oRow("Name")
            Me.Rows.Add(oMyRow)
        Next
    End Sub
End Class
Public Class MyDataRow
    Public Property Id As Integer
    Public Property Name As String
    ' Parameterless constructor to support serialization
    Public Sub New()
    End Sub
End Class

然后将方法的返回类型更改为MyDataClass,并将返回更改为:

        Return New MyDataClass(1, ds)

最新更新