WCF自定义序列化程序

时间:2009-06-08 23:25:58

标签: .net wcf json serialization

我正在WCF中创建一个返回JSON的Web服务,但DataContractJsonSerializer正在讨论一些循环引用(在这种特殊情况下我无法删除)。

相反,我想使用Newtonsoft json库。在WCF中创建自定义序列化程序的最简单方法是什么?

注意:我知道我可以返回一个流,但我不希望操作代码知道序列化的东西。

4 个答案:

答案 0 :(得分:4)

重新 WCF:如果您控制线路的两端(在“完整”.NET上),那么应用自定义序列化器相对简单 - 您添加从{{1}继承的行为},并覆盖DataContractSerializerOperationBehavior - 请参阅here(带有属性here)。

然而!我的理解(未经测试)是启用JSON的WCF服务不会使用此路由,但会直接应用自己的序列化程序。

答案 1 :(得分:2)

将DataContract的IsReference属性设置为true,它可用于.NET 3.5SP1

[DataContract(IsReference = true)]
public class Employee

有关详细信息,请参阅。 MSDN DataContractAttribute.IsReference

答案 2 :(得分:1)

非常好的文章:XmlSerializer vs DataContractSerializer: Serialization in Wcf。 Dan Rigsby正在展示不同的场景以及如何更详细地制作自己的序列化器。

答案 3 :(得分:0)

你可以使用这里提到的ScriptIgnore属性: - Ignoring a field during .NET JSON serialization; similar to [XmlIgnore]? 虽然我期待实现你想要的东西,但是不想装饰很多嵌套对象