Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在newtonsoft JSON反序列化上为单个属性接受多个名称?_C#_Json_Json.net - Fatal编程技术网

C# 如何在newtonsoft JSON反序列化上为单个属性接受多个名称?

C# 如何在newtonsoft JSON反序列化上为单个属性接受多个名称?,c#,json,json.net,C#,Json,Json.net,我们定义了一种标准的json格式(打字是故意的): 将其反序列化(使用newtonsoft)以: 是否有办法将Salari更改为Salary,并且仍然能够接受使用旧名称的邮件? 比如: class Person { public string Name; [DeserializeAlso("Salari")] public string Salary; } 要使newtonsoft反序列化程序了解应将Salari反序列化到Salary字段?可以使用以下属性: class

我们定义了一种标准的
json
格式(打字是故意的):

将其反序列化(使用newtonsoft)以:

是否有办法将
Salari
更改为
Salary
,并且仍然能够接受使用旧名称的邮件? 比如:

class Person
{
    public string Name;
    [DeserializeAlso("Salari")]
    public string Salary;
}

要使newtonsoft反序列化程序了解应将
Salari
反序列化到
Salary
字段?

可以使用以下属性:

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

是字符串。替换(“\'Salari\”,'Salary\”)这是不可能的?请检查。@Nissim我宁愿不要,因为这需要在很多时间内跟踪它places@AndreiV这不是划掉“Salary”而保留“Salari”吗?@AndreiV我认为shmoopy想使用匿名对象。你引用的答案要求对象存在
class Person
{
    public string Name;
    [DeserializeAlso("Salari")]
    public string Salary;
}
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; }
  }
}