我需要使用List<CampaignModel>
JsonConvert.SerializeObject
一切正常,只是我得到的属性的顺序不同于类声明。
我的班级声明是:
public class CampaignModel
{
public string Checked { get; set; }
public int CampaignId { get; set; }
public string Name { get; set; }
public string Market { get; set; }
public string Type { get; set; }
public bool IsActive { get; set; }
public bool Active { get; set; }
}
我在json中获取属性的顺序是:
有任何线索吗?
答案 0 :(得分:1)
不保证属性在JavaScript中具有或维护任何特定顺序。您将在C#代码中执行的操作无法更改此“限制”。
答案 1 :(得分:1)
您可以使用JsonProperty
属性
[JsonProperty(Order = 1)]
文档:JsonPropertyAttribute order
因此,假设您想要的订单是代码中的订单,那么您将拥有以下内容:
public class CampaignModel
{
[JsonProperty(Order = 1)]
public string Checked { get; set; }
[JsonProperty(Order = 2)]
public int CampaignId { get; set; }
[JsonProperty(Order = 3)]
public string Name { get; set; }
[JsonProperty(Order = 4)]
public string Market { get; set; }
[JsonProperty(Order = 5)]
public string Type { get; set; }
[JsonProperty(Order = 6)]
public bool IsActive { get; set; }
[JsonProperty(Order = 7)]
public bool Active { get; set; }
}
在所有属性上设置顺序的原因是因为任何属性都将被赋予默认值-1。这将把它们置于任何有序的属性之前。
.NetFiddle(来自Brian Rogers),显示了使用属性的快速示例 - https://dotnetfiddle.net/wr2KRh
答案 2 :(得分:1)
您可以指定要序列化的类成员的顺序。数据排序的基本规则包括:
因此,您可以使用Order属性指定类成员的顺序:
[JsonProperty(Order = 1)]
有关MSDN上JSON Serialization的更多信息