参考这个问题:
当然,很棒,但我可以吃蛋糕吗?
我正在寻找的是一种赏心悦目的方式,以一种字符可能包含的方式为一个属性提供一个替代名称.
就像是:
[BetterJsonProperty(PropertyName = "foo_bar")]
public string FooBar { get; set; }
Run Code Online (Sandbox Code Playgroud)
都
{
"FooBar": "yup"
}
Run Code Online (Sandbox Code Playgroud)
和
{
"foo_bar":"uhuh"
}
Run Code Online (Sandbox Code Playgroud)
将按预期反序列化.
由于没有属性的解决方案可以工作,或者类的属性如下:
[AllowCStylePropertyNameAlternatives]
Run Code Online (Sandbox Code Playgroud) 如何设置Newtonsoft.Json以使用旧成员名称反序列化对象,但使用当前成员名称对其进行序列化?
这是一个需要序列化和反序列化的示例对象.我给了一个属性一个属性,其中包含过去可能已被序列化的名称列表.
[DataContract]
class TestObject {
[LegacyDataMemberNames("alpha", "omega")]
[DataMember(Name = "a")]
public int A { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想json序列化始终使用名称"a",但能够从任何遗留名称反序列化到一个属性,包括"alpha"和"omega"以及当前名称"a"