我有一个相对简单的问题,我似乎找不到答案。
当WCF执行对象的序列化时,它会自动应用类型提示。对于Json服务,这会在每个称为的复杂对象上产生一个额外的字段__type。对象定义为:
__type
[DataContract] public class SomeObject { [DataMember] public string First { get; set; } [DataMember] public string Last { get; set; } }
将序列化为:
{ "First" : "Hello", "Last" : "World!", "__type" : "SomeObject#MyNamespace.SomeObject" }
通常这不是问题。不幸的是,当您开始将类嵌套到相当大和复杂的结构中时,这将导致大量返回给客户端的JSON响应的开销。
当然,必须有一种方法来禁用此行为,但是我一直找不到(Rick Strahl早在2007年都没有……但是到了2010年,我希望有人能弄清楚这一点)。
使用DataContractJsonSerializer会想做到这一点以支持多态性并能够反序列化回已知类型。NewtonSoft是第三方json序列化程序,不会添加__type提示。如果您只是序列化而不使用真正的高级DataContract属性,则可以尝试一下。
DataContractJsonSerializer