禁用WCF 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响应大小的大量开销。

肯定有一种方法可以禁用这种行为,但我找不到一个( 2007年Rick Strahl也没有回来 ……但是它是2010年,我希望有人已经弄明白了)。

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

我假设你在你的行为配置中使用 ,用替换它,你会得到漂亮和干净的json

这对我有用:

 [WebGet(ResponseFormat=WebMessageFormat.Json,BodyStyle = WebMessageBodyStyle.Bare)] 

请参阅http://dotnetdiscoveries.blogspot.com/2008/05/return-json-from-ajax-enabled-wcf.html上的步骤7和10