将复杂的JSON转换为VB.net-Class

时间:2014-01-16 11:29:42

标签: json vb.net

我们遇到以下问题,下面的JSON是在使用php登录我们的网站后为每个用户动态生成的。 因为我们在同一个数据库上使用自行开发的Windows桌面程序访问,所以我们需要处理JSON也是VB的一部分。 我们正在使用VB板工具(最好保留) 到目前为止,我们未能定义一个接收JSON的合适VB类。 在一维JSON中,它很好地与List Of(自己的对象)一起工作,但是在这里我们还没有找到合适的定义。

JSON(减少到存在的元素数量):

{
        "id": "639C",
        "admin": "0",
        "blacklist": [
            {
                "id": "4CE5",
                "name": "DEMO",
                "rechte": []
            },
            {
                "id": "EC81",
                "name": "ENTWICKLUNG",
                "rechte": [
                    {
                        "id": "001C",
                        "sichtbar": "-1",
                        "neu": "0",
                        "loeschen": "0",
                        "bearbeiten": "-1"
                    },
                    {
                        "id": "0068",
                        "sichtbar": "-1",
                        "neu": "0",
                        "loeschen": "0",
                        "bearbeiten": "-1"
                    }
                ]
            }
        ]
    }

VB-Class(已经改变了一千次):

Imports System.Runtime.Serialization
Imports System.Runtime.Serialization.Json
Imports System.IO

<DataContract()> _
Public Class myLoginResponse

    Private _Id As String
    Private _Admin As String
    Private _myMandanten As myMandanten(Of myBlacklist(Of myRecht))

    <DataMember(Name:="id")> _
    Public Property Id() As String
        Get
            Return _Id
        End Get
        Set(ByVal value As String)
            _Id = value
        End Set
    End Property

    <DataMember(Name:="admin")> _
    Public Property Admin() As String
        Get
            Return _Admin
        End Get
        Set(ByVal value As String)
            _Admin = value
        End Set
    End Property

    Public Property myMandanten() As myMandanten(Of myBlacklist(Of myRecht))
        Get
            Return _myMandanten
        End Get
        Set(ByVal value As myMandanten(Of myBlacklist(Of myRecht)))
            _myMandanten = value
        End Set
    End Property

End Class

<DataContract()> _
Public Class myMandanten(Of T)

    Inherits List(Of T)

    Private _myBlacklist As myBlacklist(Of myRecht)

    Public Property myBlacklist() As myBlacklist(Of myRecht)
        Get
            Return _myBlacklist
        End Get
        Set(ByVal value As myBlacklist(Of myRecht))
            _myBlacklist = value
        End Set
    End Property

End Class

<DataContract()> _
Public Class myBlacklist(Of T)

    Inherits List(Of myRecht)

    Private _Id As String
    Private _Name As String

    <DataMember(Name:="id")> _
    Public Property Id() As String
        Get
            Return _Id
        End Get
        Set(ByVal value As String)
            _Id = value
        End Set
    End Property

    <DataMember(Name:="name")> _
    Public Property Name() As String
        Get
            Return _Name
        End Get
        Set(ByVal value As String)
            _Name = value
        End Set
    End Property

End Class

<DataContract()> _
Public Class myRecht
    Private _Id As String
    Private _Sichtbar As Boolean
    Private _Neu As Boolean
    Private _Loeschen As Boolean
    Private _Bearbeiten As Boolean

    <DataMember(Name:="id")> _
    Public Property Id() As String
        Get
            Return _Id
        End Get
        Set(ByVal value As String)
            _Id = value
        End Set
    End Property

    <DataMember(Name:="sichtbar")> _
    Public Property Sichtbar() As Boolean
        Get
            Return _Sichtbar
        End Get
        Set(ByVal value As Boolean)
            _Sichtbar = value
        End Set
    End Property

    <DataMember(Name:="neu")> _
    Public Property Neu() As Boolean
        Get
            Return _Neu
        End Get
        Set(ByVal value As Boolean)
            _Neu = value
        End Set
    End Property

    <DataMember(Name:="loeschen")> _
    Public Property Loeschen() As Boolean
        Get
            Return _Loeschen
        End Get
        Set(ByVal value As Boolean)
            _Loeschen = value
        End Set
    End Property

    <DataMember(Name:="bearbeiten")> _
    Public Property Bearbeiten() As Boolean
        Get
            Return _Bearbeiten
        End Get
        Set(ByVal value As Boolean)
            _Bearbeiten = value
        End Set
    End Property

End Class

0 个答案:

没有答案