Json.NET类型转换

时间:2017-03-27 14:48:32

标签: c# .net json serialization

我有两个通过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?或者是否有一个设置我可以用来在序列化/反序列化时覆盖类名,以便我可以删除命名空间?

1 个答案:

答案 0 :(得分:1)

您可以使用您在设置上设置的ISerializationBinder,以便在序列化期间指定要在JSON中使用的名称以及在反序列化时使用的类型。

这样您就可以完全控制要使用的名称。

可以找到一个例子here