首页 > 解决方案 > 序列化但不反序列化 XML、JSON 和(特别是)YAML 中的字段/属性?

问题描述

我有一组对象,其中包含需要在序列化输出中检查但在反序列化时不读回的字段和属性。

这纯粹是为了调试/确认目的。我们正在创建数百个文件,我想通过添加补充信息来抽查序列化是否正确发生。我不希望在反序列化过程中读入这些补充信息——事实上这是不可能的。

我还需要在不同的序列化格式中使用相同的工具来执行此操作,以便我们可以评估哪一种效果最好。我有一个通用的序列化方法,其中所需的格式作为参数传入,所以对于每种不同的格式不希望任何过于混乱或复杂的东西。

我四处搜寻并发现了有关相关主题的各种内容-主要与相反的内容有关:在序列化期间不编写某些字段。那里的东西似乎很复杂,有时甚至很老套。

是否可以使用 Json.Net 以不同的方式序列化对象以反序列化它?

JsonConvert .NET 序列化/反序列化只读

序列化属性,但不要反序列化 Json.Net 中的属性

此外,序列化格式之间的任何方法似乎都不一致。即与[*Ignore]属性不同,没有[*SerializeOnly]属性(其中 * = JSON、XML、YAML)。

有没有一种简单的方法可以在这些序列化格式中做到这一点?是否有一个单一的属性系列可以提供帮助?还是在每种情况下都是特殊的和hacky?

标签: c#jsonxmlserializationyaml

解决方案


我已经测试并将其仅应用于 XML 序列化,但它适用于我:

当我想要一个属性被序列化但不回读时,我只需声明一个空的 setter。

public String VersionOfApplicationThatHasWrittenThisFile
{
     get
     {  
         return "1.0";
     }
     set 
     {
         // Leave empty
     }
}

推荐阅读