簡體   English   中英

vb.net返回具有多種類型的json對象?

[英]vb.net return json object with multiple types?

我需要從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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM