【发布时间】:2020-01-08 14:31:48
【问题描述】:
我们需要从 dotnet core 2.2 迁移到 dotnet core 3.1。我们有一个具有 System.Version 类属性的对象。在使用 dotnet core 2.2 进行序列化和反序列化时,我们没有使用 VersionConverter。所以 dot net core 2.2 的序列化对象在没有使用VersionConverter 的情况下以{"Major":2,"Minor":0,"Build":20,"Revision":0,"MajorRevision":0,"MinorRevision":0} 的形式输出了序列化版本。
使用 dotnet core 3.1,默认序列化(不使用 VersionConverter)是 2.0.20.0
我们已经以以前的格式存储了某些元数据,系统的其他组件也依赖它。有没有办法使用新的 dotnet 核心版本 3.1 继续使用以前的序列化和反序列化格式(使用 newtonsoft)?目前我们想让整个系统的组件向后兼容,然后通过VersionConverter进行序列化和反序列化。
【问题讨论】:
-
我们还是想用Newtonsoft.Json进行序列化和反序列化
-
那里的主要答案包括如何取回它。
-
我们正在使用 JsonConvert.SerializeObject(version)。这在旧版本和最新版本中都可以访问。此序列化为 .NET core 2.2 和 .NET core 3.1 2.2:
{"Major":2,"Minor":0,"Build":20,"Revision":0,"MajorRevision":0,"MinorRevision":0}3.1:2.0.20.0提供不同的输出 -
必须在您的全局配置中注册一个转换器。你不应该依赖这种全局行为。