Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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# 有没有办法控制JSON对象中属性的顺序?_C#_.net_Partial Classes - Fatal编程技术网

C# 有没有办法控制JSON对象中属性的顺序?

C# 有没有办法控制JSON对象中属性的顺序?,c#,.net,partial-classes,C#,.net,Partial Classes,我使用的是实体框架核心,生成的类有自己的属性,即 DataModel.Agent.cs public partial class Agent { public virtual decimal Id { get; set; } public virtual string Name { get; set; } } public partial class Agent { [N

我使用的是实体框架核心,生成的类有自己的属性,即

DataModel.Agent.cs

public partial class Agent {

    public virtual decimal Id
    {
        get;
        set;
    }

    public virtual string Name
    {
        get;
        set;
    }
}
public partial class Agent
{
    [NotMapped]
    public dynamic Custom { get; set; }
}
但是我需要其他属性,所以我在另一个文件中声明它们:

Agent.cs

public partial class Agent {

    public virtual decimal Id
    {
        get;
        set;
    }

    public virtual string Name
    {
        get;
        set;
    }
}
public partial class Agent
{
    [NotMapped]
    public dynamic Custom { get; set; }
}
问题是Agent.cs是在DataModel.Agent.cs之前编译的,因此编译器按如下顺序生成属性:Custom、Id、Name,并且生成的JSON很奇怪

我希望它是:Id、名称、自定义。换句话说,我总是希望DataModel类排在第一位

编辑:只是澄清一下,唯一的目标是通过始终将Id放在第一位使JSON更漂亮,这是一种非常常见的模式。这绝对不会影响应用程序的工作方式


有没有办法强迫编译器总是先编译其中一个文件?

你真的不应该指望JSON属性顺序,但是如果使用JSON.net

public class Account
 {
 public string EmailAddress { get; set; }

 // appear last
 [JsonProperty(Order = 1)]
 public bool Deleted { get; set; }

 [JsonProperty(Order = 2)]
  public DateTime DeletedDate { get; set; }

  public DateTime CreatedDate { get; set; }
  public DateTime UpdatedDate { get; set; }

  // appear first
  [JsonProperty(Order = -2)]
  public string FullName { get; set; }
}

您真的不应该指望JSON属性顺序,但如果使用JSON.net

public class Account
 {
 public string EmailAddress { get; set; }

 // appear last
 [JsonProperty(Order = 1)]
 public bool Deleted { get; set; }

 [JsonProperty(Order = 2)]
  public DateTime DeletedDate { get; set; }

  public DateTime CreatedDate { get; set; }
  public DateTime UpdatedDate { get; set; }

  // appear first
  [JsonProperty(Order = -2)]
  public string FullName { get; set; }
}

这是真的,JSON属性顺序不应该被计算在内。JSON对象被序列化为字典。字典键没有固有的顺序“生成的JSON很奇怪”是什么意思?对象在JSON中被序列化为字典,并且没有固有的顺序。ID为、Name为、Custom为的字典与ID为、Custom为、Name为的字典等效(如果它们具有相同的值),我使用的是ASP.Net Core,它使用Json.Net,并使用与属性声明相同的顺序进行序列化。我的意思是,我总是希望Id是JSON上的第一个字段,这是一种非常常见的方法,但它不是这样工作的。此外,这只是为了使JSON更漂亮,它对应用程序的工作方式绝对没有影响。这是真的,JSON属性顺序不应该被计算在内。JSON对象被序列化为字典。字典键没有固有的顺序“生成的JSON很奇怪”是什么意思?对象在JSON中被序列化为字典,并且没有固有的顺序。ID为、Name为、Custom为的字典与ID为、Custom为、Name为的字典等效(如果它们具有相同的值),我使用的是ASP.Net Core,它使用Json.Net,并使用与属性声明相同的顺序进行序列化。我的意思是,我总是希望Id是JSON上的第一个字段,这是一种非常常见的方法,但它不是这样工作的。而且,这只是为了让JSON更漂亮,它对应用程序的工作方式绝对没有影响。这与我想要的不完全一样,也就是对整个文件进行排序,但它确实解决了我的问题。非常感谢你!我不是100%确定这一点,VS可能会自动对它们重新排序,但请尝试更改包含所有编译标记的.csproj文件项组中文件的顺序,我相信Build将按照顺序从csproj读取它们。For.Net文件的编译顺序与引用的项目顺序无关。理解这一点的关键是:“MSBuild项目文件标准为您提供了一种用于制定生成规则的声明性语言,而不是命令式语言”-ie顺序根本不重要。这与我想要的不完全一样,即对整个文件进行排序,但它确实解决了我的问题。非常感谢你!我不是100%确定这一点,VS可能会自动对它们重新排序,但请尝试更改包含所有编译标记的.csproj文件项组中文件的顺序,我相信Build将按照顺序从csproj读取它们。Net文件的编译顺序与引用的项目顺序无关。理解这一点的关键是:“MSBuild项目文件标准为您提供了一种用于制定生成规则的声明性语言,而不是强制性语言”-ie顺序根本不重要。