我试图将一些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)
答案 0 :(得分:1)
JSON中的"contacttypeidlist"
属性只是一个简单的纯字符串。因此,请确保您在模型中尊重这一点:
Public Property contacttypeidlist As String
另一方面,如果您的JSON看起来像这样(注意值周围缺少双引号):
"contacttypeidlist": [1,2,3]
你可以在VB.NET模型中使用整数数组。
如果您无法控制原始JSON并且无法修复其格式以使contacttypeidlist
属性表示实际的整数数组而不是字符串,那么您必须分两步执行反序列化:首先反序列化原始将JSON转换为具有字符串属性的结构。在第二步中,将此字符串属性反序列化为整数数组。