一尘不染

将实体框架对象序列化为JSON

json

似乎无法使用WCF的本机DataContractJsonSerializer或ASP.NET的本机JavaScript序列化器将Entity
Framework对象序列化为JSON。这是由于两个串行器都拒绝的引用计数问题。我还尝试了Json.NET,它在引用计数问题上也特别失败。


编辑: Json.NET现在可以序列化和反序列化Entity
Framework实体


我的对象是Entity
Framework对象,它们被重载以执行其他业务功能(例如,身份验证等),并且我不想使用特定于平台的属性来修饰这些类,因为我想提供一个与平台无关的API 。

我实际上已经在https://blog.programx.co.uk/2009/03/18/wcf-json-serialization-woes-
and-a-solution/上写了我经过的各个步骤的博客。

我错过了明显的事情吗?


阅读 204

收藏
2020-07-27

共1个答案

一尘不染

我这样做的方法是将要序列化的数据投影到匿名类型中,然后对其进行序列化。这样可以确保仅将我真正想要的JSON信息序列化,并且不会在对象图的后面无意间对某些信息进行序列化。看起来像这样:

var records = from entity in context.Entities
              select new 
              {
                  Prop1 = entity.Prop1,
                  Prop2 = entity.Prop2,
                  ChildProp = entity.Child.Prop
              }
return Json(records);

我发现匿名类型对此非常理想。显然,JSON并不关心使用哪种类型来生成它。匿名类型使您可以完全灵活地输入JSON中的属性和结构。

2020-07-27