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

Jus*_*ner 14 .net c# wcf serialization json

我有一个应该是一个相对简单的问题,我似乎无法找到答案.

当WCF执行对象的序列化时,它会自动应用"类型提示".对于Json服务,这会在每个复杂对象上产生一个额外的字段__type.定义为的对象:

[DataContract]
public class SomeObject
{
    [DataMember]
    public string First { get; set; }

    [DataMember]
    public string Last { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

会序列化为:

{
    "First" : "Hello",
    "Last" : "World!",
    "__type" : "SomeObject#MyNamespace.SomeObject"
}
Run Code Online (Sandbox Code Playgroud)

通常这不是问题.不幸的是,当您开始将类嵌套到相当大且复杂的结构中时,这会导致返回客户端的JSON响应大小的大量开销.

当然必须有一种方法来禁用这种行为,但我找不到一个(2007年Rick Strahl也没有回来 ......但是它是2010年,我希望有人已经想到这一点).

Jer*_*eir 8

我假设你<enableWebScript/>在你的行为配置中使用,替换它,<webHttp defaultOutgoingResponseFormat="Json"/>你会得到漂亮和干净的json


小智 5

使用the DataContractJsonSerializer将要执行此操作以支持多态并能够反序列化回已知类型.NewtonSoft是第三方json序列化程序,不会添加__type提示.如果您只是序列化而不使用真正的高级DataContract属性,您可能想尝试一下.