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