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年,我希望有人已经想到这一点).
我假设你<enableWebScript/>在你的行为配置中使用,替换它,<webHttp defaultOutgoingResponseFormat="Json"/>你会得到漂亮和干净的json
小智 5
使用the DataContractJsonSerializer将要执行此操作以支持多态并能够反序列化回已知类型.NewtonSoft是第三方json序列化程序,不会添加__type提示.如果您只是序列化而不使用真正的高级DataContract属性,您可能想尝试一下.