.net - DataContractJsonSerializer 何时包含类型信息?

标签 .net wcf json serialization

我注意到,使用 DataContractJsonSerializer 时,序列化的 JSON 字符串有时包含以下形式的类型信息

{"__type":"MyClass:#MyNamespace", ... }

根据我的观察,它似乎只在序列化基类型但序列化 时才这样做。已知 sub 类型被传递,这是有道理的,但我还没有找到任何官方文档来确认这一点,或者确实无论如何强制序列化程序在遇到自定义类型时始终表现出这种行为。

谁能确认我的观察是否正确?更好的是,如果您知道一种方法来指示序列化程序始终序列化自定义类型的类型信息,是否可能?

谢谢,

最佳答案

实际上,您可以强制序列化程序始终一致地发出 __type 信息。

如果您独立使用序列化程序,请使用 constructor overload这需要“alwaysEmitTypeInformation”参数。传入真。

如果您使用的是 DataContractJsonSerializerOperationBehavior,请将该属性的相同属性设置为 true。我相信你也可以通过配置来做到这一点。

最后,请参阅 http://msdn.microsoft.com/en-us/library/bb412170.aspx 处的“何时发出类型提示”部分。以获得更详细的解释。

希望这可以帮助!

关于.net - DataContractJsonSerializer 何时包含类型信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4887485/

相关文章:

wcf - OData $format 系统查询选项导致错误请求 400

wcf - 如何使用 Windows 凭据将 WCF 服务重定向到 HTTPS 端点

c# - 如何解决找不到 system.serviceModel/serviceHostingEnvironment/serviceActivations 的问题。 iis 托管的 wcf 服务出错?

javascript - Kinetic JS 火焰路径事件

java - gson\json反序列化错误

c# - 如何使用 C# 创建 gRPC 流拦截器?

.net - Visual Studio 构建错误 -> Microsoft.DotNet.Common.Targets : DLL could not be found

c# - 如何防止用户控件填充选项延伸太远

c# - 在循环内部线程化以提​​高性能

javascript - 递归搜索 JSON 对象中的属性名称 {String} 并返回关联值