簡體   English   中英

使用VB.net獲取JSON格式

[英]Get the JSON Format using VB.net

建議我使用VB.net獲取如下所述的JSON格式

var fieldtypes = {

    name: { label: 'Name', type: 'text', icon: 'fa-user' },
    firstname: { label: 'First name', type: 'text', icon: 'fa-user' },

}

我想在Web方法中以AJAX調用的形式獲得這種格式。 我為此編寫了VB.net方法,但它不會生成上述的JSON。

VB.Net Web方法

Public Class FormBuilder
    Public Property label() As String
    Public Property type() As String
    Public Property icon() As String
End Class

網絡方法:

Public Shared Function LogsheetDetail(LogMasterID As Integer) As String
    Dim sCtrlTag As String = ""
    Dim sDataType As String = ""
    Dim finalVal As String = ""
    Dim oDs As DataSet
    Dim frmBuilder As New List(Of FormBuilder)()
    Try
        oDs = GenUser.TempLogsheetDetails(Conn, LogMasterID)
        If oDs.Tables(0).Rows.Count > 0 Then
            For i = 0 To oDs.Tables(0).Rows.Count - 1
                sDataType = oDs.Tables(0).Rows(i)("data_type").ToString()
                Select Case sDataType
                    Case "Text"
                        frmBuilder.Add(New FormBuilder() With { _
               .label = oDs.Tables(0).Rows(i)("parameter_name").ToString(), _
               .type = "text", _
               .icon = "fa-user" _
                })


                End Select
            Next

        End If


        oDs.Dispose()
    Catch ex As Exception
        Throw New Exception(ex.ToString)
    Finally
        If Not oDs Is Nothing Then oDs.Dispose()
    End Try
    Dim objJSSerializer As New System.Web.Script.Serialization.JavaScriptSerializer()

    Dim jsonString As String = objJSSerializer.Serialize(frmBuilder)

    Return jsonString

我相信問題在於您的代碼創建的是對象數組,而不是單個對象。 我假設您的代碼正在生成這樣的輸出:

[
    { "label": "Name", "type": "text", "icon": "fa-user" },
    { "label": "First name", "type": "text", "icon": "fa-user" }
]

理想的解決方案是創建字典而不是列表。 但是,JsonSerializer類在字典上不能很好地工作, 因此需要一種變通方法

如果您可以使用Newtonsoft Json而不是JavascriptSerializer,則會更簡單。 以下代碼使用Newtonsoft Json NuGet包生成所需的輸出:

Dim dic = New Dictionary(Of String, FormBuilder)

dic.Add("name", New FormBuilder() With {
   .label = "name",
   .type = "text",
   .icon = "fa-user"
})

dic.Add("firstname", New FormBuilder() With {
   .label = "firstname",
   .type = "text",
   .icon = "fa-user"
})

Return Newtonsoft.Json.JsonConvert.SerializeObject(dic)

暫無
暫無

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

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