我想知道我是否可以使用DataContractJsonSerializer来序列化Structure类型,还是必须是引用/类类型?
我有以下代码:
<Extension()> Public Function ToJSON(ByVal target As Object) As String
Dim serializer = New System.Runtime.Serialization.Json.DataContractJsonSerializer(target.GetType)
Using ms As MemoryStream = New MemoryStream()
serializer.WriteObject(ms, target)
ms.Flush()
Dim bytes As Byte() = ms.GetBuffer()
Dim json As String = Encoding.UTF8.GetString(bytes, 0, bytes.Length).Trim(Chr(0))
Return json
End Using
End Function
然而,如果我在结构类型上调用它,例如KeyValuePair(Of T1,T2),我会收到以下错误:
找不到类型'KeyValuePair(Of String,Object)'上的公共成员'ToJSON'。
答案 0 :(得分:2)
错误消息与DataContractJsonSerializer
或方法内的任何内容无关。它无法找到方法本身。这告诉我,您忘记添加对定义此扩展方法的命名空间的引用。我道歉我不知道VB等价,但在C#中,这是我所说的using
子句。