VB.net

2016-09-19 3 views
0

を使用してJSON形式は、私はAJAX呼び出しの形式で呼び出すウェブ-方法でこの形式を取得したいVB.netVB.net

var fieldtypes = { 

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

} 

を用いて以下に説明するように、私はJSON形式を取得する提案を取得します。 これはVB.netメソッドを記述しますが、上記のJSONは生成されません。

VB.Netウェブ法

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 

答えて

1

私はこの問題は、あなたのコードではなく、単一のオブジェクトのオブジェクトの配列を作成することであると信じています。私はコードが次のような出力を生成していると仮定しています:

理想的な解決策は、リストではなく辞書を作成することです。ただし、JsonSerializerクラスは辞書やwould need a workaroundではうまく動作しません。

JavascriptSerializerの代わりにNewtonsoft Jsonを使用する方が簡単です。次のコードは、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)