重命名WCF服务中的__type字段

本文关键字:type 字段 WCF 服务 重命名 | 更新日期: 2023-09-27 18:25:15

我正在尝试将GeoJSON映射到DataContracts,以便在工作中的一些WCF服务中使用。GeoJSON有一个名为"type"的字段,DataContracts序列化依赖于字段"__type"来支持反序列化到正确的子类型。我的DataContracts都是以GeoJSON规范命名的,我已经将DataContracts的Namespace设置为",所以基本上我已经实现了GeoJSON<===>DataContracts如果我能告诉(反)序列化程序使用字段"type"而不是字段"__type"就好了。

是否可以告诉WCF或DataContract序列化程序在哪个字段中查找类型信息?如何支持实际上使用__type字段的JSON标准?

重命名WCF服务中的__type字段

你不能__类型在DataContractJsonSerializer中的最基本级别被硬编码。

一种可能的选择是将其封装在另一个序列化程序、数据约定解析器或数据约定代理中,将__type中的内容映射到类型(序列化时),并将类型中的内容传输到__type(反序列化时)。这是一项令人头疼的额外体力劳动。

另一种选择是编写自己的序列化程序。如果你只是看看DataContractJsonSerializer是如何通过Reflector实现的,并与你的作者和读者一起模拟它,同时分析DataContractJson Serializer在哪里使用或实例化,这并不像你想象的那么难。

第三种选择是可能只使用另一个序列化程序,比如JSON.NET

第四种选择是使用MicrosoftAjax.js,它确实理解__type,然后以某种方式将其与GeoJSON结合使用(我不知道这是否可能,但只是将其作为一个潜在的想法抛出)