如何设置 Newtonsoft.Json 使用旧成员名称反序列化对象,但使用当前成员名称序列化它?
编辑:要求是从正在序列化/反序列化的类中删除过时的成员。
这是一个需要序列化和反序列化的示例对象。我给了一个属性一个属性,其中包含它过去可能已序列化的名称列表。
[DataContract]
class TestObject {
[LegacyDataMemberNames("alpha", "omega")]
[DataMember(Name = "a")]
public int A { get; set; }
}
我希望始终使用名称“a”进行 json 序列化,但能够从任何旧名称(包括“alpha”和“omega”以及当前名称“a”)反序列化为一个属性
使用 Json.NET 的一个非常简单的解决方案是仅提供带有 setter 的遗留属性。
class TestObject {
public int A { get; set; }
public int alpha { set => A = value; }
public int omega { set => A = value; }
}
您可能不希望这些公开,在这种情况下您可以标记private
并添加JsonProperty
属性。
class TestObject {
public int A { get; set; }
[JsonProperty] private int alpha { set => A = value; }
[JsonProperty] private int omega { set => A = value; }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)