使用类进行JSON序列化

时间:2018-01-30 18:04:17

标签: vb.net json.net

全部, 我需要一些帮助来理解类如何与vb.NET和JSON.NET一起工作。我对此完全陌生。我试过寻找答案,但我可能不会问正确的问题。这是我的困境:

我有一个需要发送到REST API的JSON。

{
"paInfo":[
{
    "providerAccountName":"someClient",
    "providerAccountDescription":"A fine client.",
    "providerName":"provider",
    "externalProviderIdentifier":"BU4377890111"
},
{
    "providerAccountName":"someClient1",
    "providerAccountDescription":"A fine client.",
    "providerName":"provider",
    "externalProviderIdentifier":"BU4377890111"
}
],
    "hubAccountName":"test"
}

我通过https://jsonutils.com/运行这个来构建我的课程:

Public Class PaInfo
    Public Property providerAccountName As String
    Public Property providerAccountDescription As String
    Public Property providerName As String
    Public Property externalProviderIdentifier As String
End Class

Public Class addHubAcct
    Public Property paInfo As PaInfo()
    Public Property hubAccountName As String
End Class

从那里开始,我正在尝试为类属性赋值,但我不太明白如何将PaInfo的值传递给属性。下面是我用于分配值的代码片段。如果我尝试分配a.paInfo = p,则会出错:

  

错误BC30311:无法将“PaInfo”类型的值转换为   'PaInfo()'

如果我没有将任何内容传递给a.paInfo,我会在JSON序列化中获得零长度字符串。

Private Sub serializeAcct()
    Dim p As New PaInfo
    Dim a As New addHubAcct

    p.providerAccountName = "Test\name'This ""that and the other'"
    p.providerAccountDescription = "acct desc"
    p.providerName = "tester"
    p.externalProviderIdentifier = "123456"

    a.hubAccountName = "Tester"
    a.paInfo = p  'Here's my hangup

    Dim o As String = JsonConvert.SerializeObject(a)
    Dim deserializedProduct As addHubAcct = JsonConvert.DeserializeObject(Of addHubAcct)(o)
    Stop

End Sub

?o.tostring,nq
{"paInfo":null,"hubAccountName":"Tester"}

2 个答案:

答案 0 :(得分:0)

像这样更改df['DateColumn_A'] = pd.to_datetime(df['DateColumn_A']) df['DateColumn_B'] = pd.to_datetime(df['DateColumn_B']) print (df.index[df.DateColumn_A < df.DateColumn_B]) 类:

addHubAcct

然后更改Public Class addHubAcct Public Property paInfo As New List(Of PaInfo)() Public Property hubAccountName As String End Class 中的错误行:

serializeAcct()

你可能还有其他问题,但这应该让你超越当前的障碍。

答案 1 :(得分:0)

使用List和.ToArray是我原始代码所缺少的。

Private Sub serializeAcct()
    Dim p1 As New PaInfo
    Dim ps As New List(Of PaInfo)

    Dim a As New addHubAcct

    p1.providerAccountName = "Test\name'This ""that and the other'"
    p1.providerAccountDescription = "acct desc"
    p1.providerName = "tester"
    p1.externalProviderIdentifier = "123456"

    ps.Add(p1)

    a.hubAccountName = "Tester"
    a.paInfo = ps.ToArray


    Dim o As String = JsonConvert.SerializeObject(a)


End Sub