Json vb.net序列化集合无法将集合添加到对象?

Json vb.net序列化集合无法将集合添加到对象?,json,vb.net,Json,Vb.net,我试图生成一些JSON,如下所示: { "@type": "MessageCard", "sections": [ { "activityTitle": " Request", "facts": [ { "name": "name1", "value": "Value" }, { "name": " Dat

我试图生成一些JSON,如下所示:

{
"@type": "MessageCard",
"sections": [
    {
    "activityTitle": " Request",
        "facts": [
        {
                "name": "name1",
                "value": "Value"
            },
            {
                "name": " Date:",
                "value": "Value Date"
            }
        ],
    "text": "Some Test."
    }
 ],
"potentialAction": [
    {
        "@type": "ActionCard",
        "name": "Add a comment",
        "inputs": [
            {
                "@type": "TextInput",
                "id": "comment",
                "isMultiline": true
            }
         ]
     }
   ]
}
我在VS中执行了一个特殊的粘贴,它为我生成了类结构:

Public Class MessageCard
 Public Property type As String
 Public Property context As String
 Public Property summary As String
 Public Property themeColor As String
 Public Property sections() As Section
 Public Property potentialAction() As Potentialaction
End Class
我正在尝试将节添加到对象中,如下所示:

Dim m as New MessageCard  
Dim s As New List(Of Section)
        s.Add(s1)
        s.Add(s2)
        m.sections = s

编译器抱怨无法将节列表转换为节。类是否生成错误,或者我是否构造错误

首先,您的JSON不太完整,您显示的类不会创建该JSON

如前所述,该JSON只显示了一个不相关的
部分
潜在动作
类。需要一个封闭的
[…]
来表示包含它们两个的
MessageCard

[{
“@type”:“MessageCard”,

}]

接下来,您拥有的类显示了JSON中不存在的各种内容:
上下文
摘要
主题颜色
。我想这些可能是为了简洁而遗漏的,但这是令人困惑的。JSON中还缺少另外两种类型,分别是、
Fact
Input

更正后,等级应为:

Public Class MsgCard
    <JsonProperty("@type")>
    Public Property ItemType As String
    Public Property sections As List(Of Section)
    Public Property potentialAction As List(Of Potentialaction)

    Public Sub New()
        sections = New List(Of Section)
        potentialAction = New List(Of Potentialaction)
    End Sub
End Class

Public Class Section
    Public Property activityTitle As String
    Public Property facts As Fact()
    Public Property text As String
End Class

Public Class Fact
    Public Property name As String
    Public Property value As String
End Class

Public Class Potentialaction
    <JsonProperty("@type")>
    Public Property ActionType As String
    Public Property name As String
    Public Property inputs As Input()
End Class

Public Class Input
    <JsonProperty("@type")>
    Public Property InputType As String
    Public Property id As String
    Public Property isMultiline As Boolean
End Class
它只是声明
将是一个数组,而不是创建数组。通常这不是问题,因为序列化程序/反序列化程序将创建数组。要允许类外部的代码添加到它们中,您可能需要像上面的类那样使用
列表
,然后在构造函数中创建实例:

Public Sub New()
    sections = New List(Of Section)
    potentialAction = New List(Of Potentialaction)
End Sub

节作为节()
潜在动作作为潜在动作()
机器人在阵列方面有问题。但是(节的)列表仍然无法存储到节数组中。您可以按以下方式键入属性:Lists@plutonix我仍然停留在这一点上,我将
节更改为Section()
,然后尝试执行
m.sections(0)=s
,但得到一个空引用。您需要创建数组实例(或列表实例),或者在构造函数中创建实例,或者作为声明的一部分
Public Sub New()
    sections = New List(Of Section)
    potentialAction = New List(Of Potentialaction)
End Sub