Serialization 我可以告诉WCF WebAPI序列化程序忽略嵌套类对象吗?

Serialization 我可以告诉WCF WebAPI序列化程序忽略嵌套类对象吗?,serialization,datacontractserializer,wcf-web-api,jsonserializer,Serialization,Datacontractserializer,Wcf Web Api,Jsonserializer,我正在使用WCF编写REST服务。 我将从我的服务返回作为json/xml对象的POCO类。 我的大多数POCO类都包含ICollections,因为它们首先是EF4.1代码的一部分, 因此我得到了一个错误: 无法序列化类型为的成员。。。 System.Collections.Generic.ICollection。。。因为它是一种- 因为它是一个接口 为了避免XMLIgnore和ScriptIgnore被忽略。这方面也存在一些问题 我只是认为有人可能遇到了类似的问题,并有更好的解决方案或方法来

我正在使用WCF编写REST服务。 我将从我的服务返回作为json/xml对象的POCO类。 我的大多数POCO类都包含
ICollection
s,因为它们首先是EF4.1代码的一部分, 因此我得到了一个错误:

无法序列化类型为的成员。。。 System.Collections.Generic.ICollection。。。因为它是一种- 因为它是一个接口

为了避免
XMLIgnore
ScriptIgnore
被忽略。这方面也存在一些问题


我只是认为有人可能遇到了类似的问题,并有更好的解决方案或方法来配置序列化类,否则我将不得不用
XMLIgnore
等修饰每个这样的属性。

我发现在WCF WebAPI中
[ScriptIgnore]
[JsonIgnore]
不起作用,因此,我将回到ASP.NETMVC,了解与json相关的RESTAPI


更新[2012年7月24日]这个答案很旧,而且Microsfot WebAPI已经取得了长足的进步,请在依赖这个答案之前进行检查。

通常,您可能会使用DTO或(ASP.NET MVC中的视图模型)与域模型解耦。您还可以使用AutoMapper最小化域模型和DTO之间的代码转换。

您必须添加[XmlIgnore]和[IgnoreDataMember]。然后,xml和json响应将忽略该属性。

没错,Sandro,
[IgnoreDataMember]
[XmlIgnore]
是必需的

再解释一下:
[IgnoreDataMember]
需要排除json序列化中的字段,
需要使用
[XmlIgnore]
来排除xml序列化中的字段。

+1响应此响应。WCF WebAPI并不是真正的跨网络提供丰富实体的业务,它更侧重于RESTful交互和数据表示。我的所有WCF WebAPI都公开了专门制作的DTO,这些DTO仅代表请求所需的数据。谢谢,我理解这一点,但我编写这些REST svc的原因是为了与内部数据库进行云数据库同步,因此我将按原样发送EF POCO实体。