【问题标题】:Can I tell the WCF WebAPI serializer to ignore nested class objects?我可以告诉 WCF WebAPI 序列化程序忽略嵌套类对象吗?
【发布时间】:2011-10-21 01:23:44
【问题描述】:

我正在使用WCF WebAPI 使用 WCF 编写 REST 服务。 我将我的 POCO 类作为 json/xml 对象从我的服务中返回。 我的大多数 POCO 类都包含 ICollections,因为它们是 EF4.1 Code First 的一部分, 因此我得到错误:

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

为了避免 XMLIgnoreScriptIgnoresuggested。而且custom serialization of JSON in WCF有一些问题。

只是觉得有人可能遇到过类似的问题,并且有更好的解决方案或配置序列化类的方法,否则我将不得不用XMLIgnore 等装饰每个此类属性。

【问题讨论】:

    标签: serialization datacontractserializer wcf-web-api jsonserializer


    【解决方案1】:

    通常您可能会使用 DTO 或(在 ASP.NET MVC 中查看模型)与您的域模型分离。并且您可以使用 AutoMapper 最大限度地减少域模型和 DTO 之间的代码转换。

    【讨论】:

    • 对此回复+1。 WCF WebAPI 并不是真正从事通过网络提供丰富实体的业务,它更专注于 RESTful 交互和数据表示。我所有的 WCF WebAPI 都公开了专门设计的 DTO,它们仅代表请求所需的数据。
    • 谢谢,我明白这一点,但我写这些 REST svc 的原因是为了与内部数据库同步云数据库,因此我按原样发送 EF POCO 实体。
    【解决方案2】:

    您必须添加 [XmlIgnore] 和 [IgnoreDataMember]。那么对于 xml 和 json 响应,该属性将被忽略。

    【讨论】:

      【解决方案3】:

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

      稍微解释一下: 需要[IgnoreDataMember] 排除json序列化中的字段, xml序列化中排除字段需要[XmlIgnore]

      【讨论】:

        【解决方案4】:

        我发现在 WCF WebAPI 中 [ScriptIgnore][JsonIgnore] 不起作用并且没有效果,所以我将返回 ASP.NET MVC 以获取与 json 相关的 REST API。

        更新[2012 年 7 月 24 日] 这个答案是旧的,并且 Microsfot WebAPI 已经走过了很长的路,请在依赖这个答案之前检查。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-08-19
          • 1970-01-01
          • 2015-11-29
          • 1970-01-01
          • 1970-01-01
          • 2015-11-05
          • 2015-08-04
          • 2013-12-25
          相关资源
          最近更新 更多