json待序列化的类型的,必须指定特性: <System.Runtime.Serialization.DataContract()>
如果没有指定,会提示,反序列化发生错误。
反序列化Json出现错误。无法序列化类型“测试项目.Module1+products”。请考虑将其标以 DataContractAttribute 特性,并将其所有要序列化的成员标以 DataMemberAttribute 特性。如果类型为集合,则请考虑将其标以 CollectionDataContractAttribute 特性。有关其他受支持的类型,请参见 Microsoft .NET Framework 文档。
对应的属性,也必须显示指定:<System.Runtime.Serialization.DataMember()>,如果没有显示指定,不会有异常抛出,但是确不能获取指定的值。
对于.net 4.0 需要引用
System.Runtime.Serialization
完成代码:
Shared Function Json2Obj(ByVal json As String, ByVal t As Type) As Object
Try
Dim s = New System.Runtime.Serialization.Json.DataContractJsonSerializer(t)
Using m As New IO.MemoryStream(System.Text.UTF8Encoding.UTF8.GetBytes(json))
Return s.ReadObject(m)
End Using
Catch ex As Exception
Throw
End Try
End Function
<System.Runtime.Serialization.DataContract()>
Public Class products
Public Sub New()
Me.product_results = String.Empty
Me.category_results = String.Empty
Me.results_footer = String.Empty
End Sub
<System.Runtime.Serialization.DataMember()>
Public Property product_results As String
<System.Runtime.Serialization.DataMember()>
Public Property category_results As String
<System.Runtime.Serialization.DataMember()>
Public Property results_footer As String
End Class
第一次使用走了不少弯路。
相关资源:
可以把json格式,转换为 html