【问题标题】:Iterate through JSON array in webmethod using vb.net使用 vb.net 遍历 webmethod 中的 JSON 数组
【发布时间】:2017-10-31 15:47:58
【问题描述】:

我有这个 JSON Array 代表 3 条记录的对象

{"Data":[{"RecID":2383,"PrtStatus":true},{"RecID":3387,"PrtStatus":true},{"RecID":3388,"PrtStatus":true}]}

我正在尝试遍历它。我为它构建了以下类

Public Class TblRegJoindata
    Dim p_RecID As Integer
    Dim p_status As Boolean

    Public Property RecID As Integer
        Get
            Return p_RecID
        End Get
        Set(ByVal value As Integer)
            p_RecID = value
        End Set
    End Property

    Public Property PrtStatus As Boolean
        Get
            Return p_status
        End Get
        Set(ByVal value As Boolean)
            p_status = value
        End Set
    End Property
End Class

在我的网络方法中,我可以访问数据,但无法找到循环并存储它们的方法

<WebMethod> _
Public Function TblRegJoinUpd3(ByVal Data As List(Of TblRegJoindata))
    Dim x As Integer = Data(0).RecID
End Function

我正在尝试做的是这样的事情,我尝试实现它但不允许使用“长度”属性

For i As Integer = 0 To Data.Length - 1
    cmd.Parameters.Clear()
    cmd.Parameters.Add("@RecID", SqlDbType.Int).Value = Convert.ToInt32(i)
    cmd.Parameters.Add("@PrtStatus", SqlDbType.Bit).Value = Boolean.Parse((i))
    cmd.ExecuteNonQuery()
Next

更新

<WebMethod> _
Public Function TblRegJoinUpd3(ByVal Data As List(Of TblRegJoindata))
    Dim constr As String = ConfigurationManager.ConnectionStrings("ARTSQLConStrng").ConnectionString
    Using con As New SqlConnection(constr)
        Using cmd As New SqlCommand("TblRegjoinUpdRec", con)
            cmd.CommandType = CommandType.StoredProcedure
            con.Open()
            For i As Integer = 0 To Data.Count - 1
                cmd.Parameters.Clear()
                cmd.Parameters.Add("@RecID", SqlDbType.Int).Value = Convert.ToInt32(Data(i).RecID)
                cmd.Parameters.Add("@PrtStatus", SqlDbType.Bit).Value = Boolean.Parse(Data(i).PrtStatus)
                cmd.ExecuteNonQuery()
            Next
            con.Close()
        End Using
    End Using
    Return (Data.Count)

返回 data.count 仅用于测试目的

【问题讨论】:

  • 您需要使用 Count 属性而不是 Length。 Data.Count.
  • @Chetan Ranpariya,,, 我试过这个来测试,,, Public Function TblRegJoinUpd3(ByVal Data As List(Of TblRegJoindata)) For i As Integer = 0 To Data.Count - 1 Return Data( i).PrtStatus Next End Function,,,,, 我只得到第一个值而不是三个,,,
  • 您是否调试并检查过 Data 的计数是多少? for循环是否执行了3次?您能否更新问题中的代码并解释什么不起作用以及它是如何不起作用的?预计如何运作?
  • 哦,我会建立我的逻辑并更新我上面的代码,我会在完成后发送给您,谢谢您的及时回复
  • @Chetan Ranpariya,我测试了它并且它的工作,计数是 3 并且记录得到了正确处理,请你发表你的评论作为答案,以便我标记它,非常感谢

标签: asp.net json vb.net webmethod


【解决方案1】:

感谢Chetan Ranpariya 整个工作解决方案如下

Public Class TblRegJoindata
Dim p_RecID As Integer
Dim p_status As Boolean

Public Property RecID As Integer
    Get
        Return p_RecID
    End Get
    Set(ByVal value As Integer)
        p_RecID = value
    End Set
End Property

Public Property PrtStatus As Boolean
    Get
        Return p_status
    End Get
    Set(ByVal value As Boolean)
        p_status = value
    End Set
End Property
End Class

<WebMethod> _
Public Function TblRegJoinUpd3(ByVal Data As List(Of TblRegJoindata))
    Dim constr As String = ConfigurationManager.ConnectionStrings("ARTSQLConStrng").ConnectionString
    Using con As New SqlConnection(constr)
        Using cmd As New SqlCommand("TblRegjoinUpdRec", con)
            cmd.CommandType = CommandType.StoredProcedure
            con.Open()
            For i As Integer = 0 To Data.Count - 1
                cmd.Parameters.Clear()
                cmd.Parameters.Add("@RecID", SqlDbType.Int).Value = Convert.ToInt32(Data(i).RecID)
                cmd.Parameters.Add("@PrtStatus", SqlDbType.Bit).Value = Boolean.Parse(Data(i).PrtStatus)
                cmd.ExecuteNonQuery()
            Next
            con.Close()
        End Using
    End Using
    Return (Data.Count)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 2011-02-05
    • 1970-01-01
    • 2013-06-07
    • 2019-09-15
    相关资源
    最近更新 更多