我有两个通过rest API进行通信的应用程序,通过Json.NET序列化
我遇到困难的部分是在两个应用程序之间传递继承结构:
ChildClass1 : BaseClass
ChildClass2 : BaseClass
我需要能够将每个单独反序列化的BaseClass列表反序列化为正确的相对类型:
JsonConvert.DeserializeObject<IEnumerable<BaseClass>>(json)
我知道TypeNameHandling.All Serializer设置,但我遇到的问题是每个应用程序上的类都在不同的命名空间中:
申请1:
App1.NameSpace.ChildClass1
申请2:
App2.DifferentNameSpace.ChildClass1
由于这个原因,它不会自动转换它们。无法更改名称空间或为这些类使用合同库。
我是否需要编写自定义JsonReader?或者是否有一个设置我可以用来在序列化/反序列化时覆盖类名,以便我可以删除命名空间?
答案 0 :(得分:1)
您可以使用您在设置上设置的ISerializationBinder
,以便在序列化期间指定要在JSON中使用的名称以及在反序列化时使用的类型。
这样您就可以完全控制要使用的名称。
可以找到一个例子here。