如何在newtonsoft JSON反序列化中接受单个属性的多个名称?

id_cum 发布于 5 天前 c# 最后更新 5 天前 0 浏览

我们有一个我们定义的标准json格式(错字是故意的):

{
  "Name" : "John",
  "Salari" : "150000"
}
将其反序列化(使用newtonsoft)以:
class Person
{
    public string Name;
    public string Salari;
}
有没有办法将Salari更改为Salary,并仍然能够接受带有旧名称的邮件? 就像是:
class Person
{
    public string Name;
    [DeserializeAlso("Salari")]
    public string Salary;
}
为了使牛顿软件反序列化器理解Salari应该被反序列化为Salary字段?
已邀请:

eipsum

赞同来自:

您可以使用属性:

class Person
{
  protected string _Salary;
  public string Salary
  {
    get { return _Salary; }
    set { _Salary = value; }
  }
  public string Name { get; set; } 
}
class BackwardCompatiblePerson : Person
{
  public string Salari 
  {
    get { return _Salary; }
    set { _Salary = value; }
  }
}
并使用Person进行序列化和放大BackwardCompatiblePerson用于反序列化。