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

时间:2015-01-11 16:38:36

标签: json vb.net

我试图将一些Json反序列化为.Net类。我对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类定义

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)

1 个答案:

答案 0 :(得分:1)

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

Public Property contacttypeidlist As String

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

"contacttypeidlist": [1,2,3]

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

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