一尘不染

在WCF JSON服务中禁用类型提示

json

我有一个相对简单的问题,我似乎找不到答案。

当WCF执行对象的序列化时,它会自动应用类型提示。对于Json服务,这会在每个称为的复杂对象上产生一个额外的字段__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年,我希望有人能弄清楚这一点)。


阅读 233

收藏
2020-07-27

共1个答案

一尘不染

使用DataContractJsonSerializer会想做到这一点以支持多态性并能够反序列化回已知类型。NewtonSoft是第三方json序列化程序,不会添加__type提示。如果您只是序列化而不使用真正的高级DataContract属性,则可以尝试一下。

2020-07-27