Jae*_*aex 5 c# serialization json json.net
让我们假设我喜欢这个属性,我用它来保存/加载设置:
public Options RectangleCaptureOptions { get; set; }
Run Code Online (Sandbox Code Playgroud)
我想更改属性名称RegionCaptureOptions而不是RectangleCaptureOptions.但是,如果我更改属性名称,那么Json .NET将无法找到它反序列化.
这里接受的答案不起作用:
.NET NewtonSoft JSON将映射反序列化为不同的属性名称
因为如果我使用JsonProperty:
[JsonProperty("RectangleCaptureOptions")]
public Options RegionCaptureOptions { get; set; }
Run Code Online (Sandbox Code Playgroud)
然后它还将序列化属性,因为RectangleCaptureOptions它是旧名称.
因此,当我更改变量或属性的名称时,仍然希望在反序列化时(RegionCaptureOptions或者RectangleCaptureOptions对于此示例)支持它们的旧命名,但在序列化(RegionCaptureOptions)时使用当前名称.这样,我可以在加载(反序列化)它们时为我的设置json文件提供向后兼容性支持.
我认为最干净的解决方案是制作自定义属性JsonAlternativeName,如下所示:
[JsonAlternativeName("RectangleCaptureOptions")]
public Options RegionCaptureOptions { get; set; }
Run Code Online (Sandbox Code Playgroud)
可选地,它可以具有多个参数支持,这样您可以添加多个替代名称.
但不确定如何完成它(或者根本不可能)并且无法在StackOverflow中找到类似的解决方案,因为在我发现的每个问题中,人们建议使用JsonProperty哪些对我的情况没有帮助.
| 归档时间: |
|
| 查看次数: |
161 次 |
| 最近记录: |