DataContractJsonSerializer何时包含类型信息?

时间:2011-02-03 14:41:23

标签: .net wcf json serialization

我注意到使用DataContractJsonSerializer时,序列化的JSON字符串有时会包含

形式的类型信息
{"__type":"MyClass:#MyNamespace", ... }

基于我的观察,它似乎只在它序列化基类型时才这样做但是传递了已知子类型而这是有意义的,但是我没有找到任何官方文档来证实这一点或者实际上无论如何强制序列化程序在遇到自定义类型时始终表现出这种行为。

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

谢谢,

1 个答案:

答案 0 :(得分:14)

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

如果您使用独立的序列化程序,请使用带有“alwaysEmitTypeInformation”参数的constructor overload。传递真实。

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

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

希望这有帮助!