当JSON.NET序列化时,属性顺序会搞乱

Sam*_*Sam 8 c# serialization json json.net

在我的POCO对象中,我经常从其他POCO对象继承.当我使用JSON.NET序列化POCO对象时,属性的顺序变得混乱.

说,我有一个看起来像这样的Person类:

public class Person
{
   public int Id {get; set;}
   public string FirstName {get; set;}
   public string LastName {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个继承自Person类的Employee类:

public class Employee : Person
{
   public int DepartmentId {get; set;}
   public string Title {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

当我序列化Employee类时,我的JSON对象如下所示:

{
   "departmentId": 123,
   "title": "Manager",
   "id": 1234567,
   "firstName": "John",
   "lastName": "Smith"
}
Run Code Online (Sandbox Code Playgroud)

两个问题:

  1. 我的JSON对象属性的顺序是否重要?
  2. 即使属性的顺序无关紧要,我怎样才能使属性处于正确的顺序,即我希望首先看到Person类属性,然后是Employee类属性.

谢谢您的帮助.

Fra*_*cis 13

1.)不,顺序无关紧要.

2.)您可以使用[JsonProperty(Order = x)]属性来控制顺序:

public class Employee : Person
{
    [JsonProperty(Order = 1)]
    public int DepartmentId { get; set; }

    [JsonProperty(Order = 1)]
    public string Title { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

从快速测试开始,订单默认为0,从低到高排序,具有相同Order值的属性按任意顺序排序.