DataContractJsonSerializer 如何序列化一个匿名对象?

Triumph 2011-01-29 11:45:36


Dim o = New With {.id = "111"}

Dim _json As New System.Runtime.Serialization.Json.DataContractJsonSerializer(o.GetType)
Using _ms As New IO.MemoryStream
_json.WriteObject(_ms, o) '运行至此报错,提示无法序列化 AnonymousType
Response.Write(Text.Encoding.UTF8.GetString(_ms.ToArray))
_ms.Close()
End Using



而换成 Newtonsoft 则没有问题:
Response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(o))



难道是 DataContractJsonSerializer 不支持匿名对象?求解
...全文
248 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
问题其实并不是出自它是不是一个匿名类型。看看这个程序
Module Module1

Sub Main()
Dim o = New aa With {.id = "111"}
Dim _json As New System.Runtime.Serialization.Json.DataContractJsonSerializer(o.GetType)
Using _ms As New IO.MemoryStream
_json.WriteObject(_ms, o)
Console.WriteLine(Text.Encoding.UTF8.GetString(_ms.ToArray))
End Using
Console.ReadKey()
End Sub

End Module

Class aa
Public id As String
End Class


它不被DataContractJsonSerializer支持。你不许把aa定义为public的才支持。
Triumph 2011-01-30
  • 打赏
  • 举报
回复
JavaScriptSerializer 没试过,MS不是提示过时了,不建议使用了吗?

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧