Desativar dicas de tipo nos serviços WCF JSON

Eu tenho o que deve ser uma questão relativamente simples que eu não consigo encontrar uma resposta para.

Quando o WCF realiza sua serialização de objects, ele aplica automaticamente o Type Hinting. Para serviços Json, isso resulta em um campo extra em cada object complexo chamado __type . Um object definido como:

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

Serializaria para algo como:

 { "First" : "Hello", "Last" : "World!", "__type" : "SomeObject#MyNamespace.SomeObject" } 

Normalmente isso não é um problema. Infelizmente, quando você começa a aninhar classs em estruturas razoavelmente grandes e complexas, isso resulta em uma tonelada de sobrecarga no tamanho da resposta JSON voltando ao cliente.

Certamente tem que haver uma maneira de desabilitar esse comportamento, mas eu não consegui encontrar um ( Rick Trill não tinha retornado em 2007 … mas é 2010 e espero que alguém tenha descoberto isso).

Usar o DataContractJsonSerializer vai querer fazer isso para suportar o polymorphism e ser capaz de desserializar de volta para um tipo conhecido. O NewtonSoft é um serializador json de terceiros que não adiciona a dica __type. Se você está apenas serializando e não usando um atributo DataContract real, você pode querer experimentá-lo.

Eu estou supondo que você está usando em sua configuração de comportamento, substitua isso com e você terá json agradável e limpo

Isso fez o truque para mim:

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

Veja as etapas 7 e 10 de http://dotnetdiscoveries.blogspot.com/2008/05/return-json-from-ajax-enabled-wcf.html