【发布时间】:2015-12-10 20:40:52
【问题描述】:
考虑这两个类:
public Class Base {
public string Id {get; set;}
public string Name {get; set;}
public string LastName {get; set;}
}
以及派生类:
public Class Derived : Base {
public string Address {get; set;}
public DateTime DateOfBirth {get; set;}
}
当使用Json.Net序列化派生类时:
Derived record = new Derived record(); {// Initialize here...}
JsonConvert.SerializeObject(record);
默认情况下,派生类的属性首先出现:
{
"address": "test",
"date_of_birth" : "10/10/10",
"id" : 007,
"name" : "test name",
"last_name": "test last name"
}
我需要什么:
{
"id" : 007,
"name" : "test name",
"last_name": "test last name"
"address": "test",
"date_of_birth" : "10/10/10",
}
问题
在序列化派生类时,是否可以先基类属性(两个类的每个属性都不使用[JsonProperty(Order=)])? p>
【问题讨论】:
-
是否值得问“为什么需要不同的顺序?”这个问题?
-
@TimBarrass 只是为了在手动测试和调试时更有条理。
-
根据JSON standard,JSON 对象是一组*无序的名称/值对*。所以我的建议是不要担心这个。
-
对于 JSON 的测试,我发现
JToken.DeepEquals非常有用,它消除了纯粹由于格式造成的差异。 -
我不认为“订单”编号必须是连续的。也许你可以为每个孩子分配“乐队”(即,基数是 1-10,孩子 A 是 11-20,孩子 B 是 21-30,等等)。
标签: c# json serialization json.net