将 Json 反序列化为列表(整数)

Deserialize Json to List(of Integer)

我正在尝试将一些 Json 反序列化为 .Net class。我在使用 contacttypeidlist 字段时遇到问题。 我怎样才能改变 Json 让它工作?

我收到以下错误:

无法将类型 'System.String' 的对象转换为类型'System.Collections.Generic.List`1[System.Int32]'

Json

[
    {
        "fullname": "bob smith",
        "email": "bob@test.com",
        "phone": "555-5555",
        "onsite": "true",
        "contacttypeidlist": "[1,2,3]"
   }
]

反序列化代码

 Dim oSerializerSort As System.Web.Script.Serialization.JavaScriptSerializer = New System.Web.Script.Serialization.JavaScriptSerializer()
 Dim lobjSiteContactsList = oSerializerSort.Deserialize(Of List(Of SiteContact))(lstrSiteContactsJson)

SiteContact Class 定义

Public Property fullname As String
Public Property email As String
Public Property phone As String
Public Property onsite As Boolean
Public Property contacttypeidlist As List(Of Integer)

您的 JSON 中的 "contacttypeidlist" 属性 只是一个简单的纯字符串。因此,请确保您在模型中尊重这一点:

Public Property contacttypeidlist As String

另一方面,如果您的 JSON 看起来像这样(请注意值周围缺少双引号):

"contacttypeidlist": [1,2,3]

您可以在 VB.NET 模型中使用整数数组。

如果您无法控制原始 JSON 并且无法修复其格式,以便 contacttypeidlist 属性 表示实际的整数数组而不是字符串,那么您必须执行反序列化分两步进行:首先将原来的 JSON 反序列化为字符串 属性 的结构。然后在第二步中将此字符串 属性 反序列化为整数数组。