C# JSon.Net如何将$type仅用于反序列化
我使用Json中的$type属性反序列化继承的对象(以选择在运行时反序列化的正确对象类型) 我使用以下方法进行此操作:C# JSon.Net如何将$type仅用于反序列化,c#,json,serialization,json.net,C#,Json,Serialization,Json.net,我使用Json中的$type属性反序列化继承的对象(以选择在运行时反序列化的正确对象类型) 我使用以下方法进行此操作: config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings{ TypeNameHandling = TypeNameHandling.Objects} 该行位于WebApiConfig文件中 它工作得很好,但我不知道如何将$type仅限于真正需要它的Web服务(我只需要一次P
config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings{ TypeNameHandling = TypeNameHandling.Objects}
该行位于WebApiConfig文件中
它工作得很好,但我不知道如何将$type仅限于真正需要它的Web服务(我只需要一次PUT和一次POST)。
$type会弄乱其他Web服务的API结果,我找不到一些TypeNameHandling配置或序列化选项来避免这种情况。
有人知道怎么做吗?
干杯 要在嵌套对象上启用类型名称处理,可以附加到包含属性,如下所示:
public class RootObject
{
[JsonProperty(ItemTypeNameHandling = TypeNameHandling.Objects)]
public object Data { get; set; }
}
没有内置方法可以在特定类型上启用类型名称处理,因此也没有内置方法可以在根对象上启用类型名称处理。相反,如果需要,您可以使用中的启用JSONTypeNameHandlingConverter。感谢dbc的帮助。我在反序列化过程中遇到了其他问题(使用OData.Delta对象,而您提出的解决方案实际上并不完全符合需要)。 多亏了这篇文章,我克服了这个问题:
仅对少数Web服务进行$type自定义。根对象需要$type还是嵌套对象需要$type?嵌套对象需要$type。至少现在……我仍然可以重构并在根位置使用它。