如何在牛顿软件 JSON 反序列化上接受单个属性的多个名称

本文关键字:属性 单个 软件 反序列化 JSON | 更新日期: 2023-09-27 17:56:22

我们有一个我们定义的标准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;
}

要让Newtonsoft反序列化器明白Salari应该反序列化到Salary领域?

如何在牛顿软件 JSON 反序列化上接受单个属性的多个名称

您可以使用属性:

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进行反序列化。