class a { public int a { get; set; } public int aa { get; set; } } class b : a { public int b { get; set; } public int bb { get; set; } }//逻辑测试类 class test{ public void t(){ List<b> list = new List<b>(); //转换对象 var item = from c in list select new { itema = c.a, itemaa = c.aa, itemb = c.b, itembb = c.bb }; }}
反正 返回的JSON是 Model.Property 这么访问的,要纠结顺序的话,有些费解.
可以试试WCF的数据契约 [DataMember(Name = "Id_Contract", IsRequired = false, Order = 0)] public long Id { get { return m_id; } set { m_id = value; } }或者var data=from x in list select new { x.Id x.Name }重新排序罗~蛋疼了点~
//转换对象 var item = from c in list select new { itema = c.a, itemaa = c.aa, itemb = c.b, itembb = c.bb };这样可以把
在 https://github.com/darcyliu/google-styleguide/blob/master/JSONStyleGuide.md 有一个规范,对属性顺序有个说法=====属性顺序在JSON对象中属性可有任意顺序。然而,在某些情况下,有序的属性可以帮助分析器快速解释数据,并带来更好的性能。在移动环境下的解析器就是个例子,在这种情况下,性能和内存是至关重要的,不必要的解析也应尽量避免。Kind属性Kind属性应为第一属性假设一个解析器负责将一个原始JSON流解析成一个特定的对象。*kind*属性会引导解析器将适合的对象实例化。因而它应该是JSON对象的第一个属性。这仅适用于对象有一个kind属性的情况(通常可以在*data*和*items*属性中找到)。Items属性items应该是_data_对象的最后一个属性这使得阅读每一个具体条目前前已读所有的集合属性。在有很多条目的情况下,这样就避免了开发人员只需要从数据的字段时不必要的解析这些条目。这让阅读所有集合属性先于阅读单个条目。如遇多个条目的情况,当开发者仅需要数据中的字段时,这就可避免解析不必要的条目。属性顺序示例:// "kind" 属性区分 "album" 和 "photo". // "Kind" 始终是它父对象的第一个属性. // "items" 属性是 "data" 对象的最后一个属性. { "data": { "kind": "album", "title": "My Photo Album", "description": "An album in the user's account", "items": [ { "kind": "photo", "title": "My First Photo" } ] } }==============我是想既然是公开的接口,设计的漂亮点还是好的,不然每次返回的json,版本号不是第一个,而是最后一个,还是挺难看的。用linq,如果返回的类型比较复杂,有子类有数组,还是挺麻烦的。wcf倒是没试过,不过为了排序,引入wcf不知道到底值不值。
如果你是要先用这个属性的话,就在序列化的之前把属性的位子该下,
可以用Linq 转成一个匿名对象在序列化。
{
public int a { get; set; }
public int aa { get; set; }
}
class b : a
{
public int b { get; set; }
public int bb { get; set; }
}//逻辑测试类
class test{ public void t(){
List<b> list = new List<b>();
//转换对象
var item = from c in list select new { itema = c.a, itemaa = c.aa, itemb = c.b, itembb = c.bb }; }}
[DataMember(Name = "Id_Contract", IsRequired = false, Order = 0)]
public long Id
{
get { return m_id; }
set { m_id = value; }
}或者var data=from x in list
select new
{
x.Id
x.Name
}重新排序罗~蛋疼了点~
var item = from c in list select new { itema = c.a, itemaa = c.aa, itemb = c.b, itembb = c.bb };这样可以把
https://github.com/darcyliu/google-styleguide/blob/master/JSONStyleGuide.md
有一个规范,对属性顺序有个说法=====属性顺序在JSON对象中属性可有任意顺序。然而,在某些情况下,有序的属性可以帮助分析器快速解释数据,并带来更好的性能。在移动环境下的解析器就是个例子,在这种情况下,性能和内存是至关重要的,不必要的解析也应尽量避免。Kind属性Kind属性应为第一属性假设一个解析器负责将一个原始JSON流解析成一个特定的对象。*kind*属性会引导解析器将适合的对象实例化。因而它应该是JSON对象的第一个属性。这仅适用于对象有一个kind属性的情况(通常可以在*data*和*items*属性中找到)。Items属性items应该是_data_对象的最后一个属性这使得阅读每一个具体条目前前已读所有的集合属性。在有很多条目的情况下,这样就避免了开发人员只需要从数据的字段时不必要的解析这些条目。这让阅读所有集合属性先于阅读单个条目。如遇多个条目的情况,当开发者仅需要数据中的字段时,这就可避免解析不必要的条目。属性顺序示例:// "kind" 属性区分 "album" 和 "photo".
// "Kind" 始终是它父对象的第一个属性.
// "items" 属性是 "data" 对象的最后一个属性.
{
"data": {
"kind": "album",
"title": "My Photo Album",
"description": "An album in the user's account",
"items": [
{
"kind": "photo",
"title": "My First Photo"
}
]
}
}==============我是想既然是公开的接口,设计的漂亮点还是好的,不然每次返回的json,版本号不是第一个,而是最后一个,还是挺难看的。用linq,如果返回的类型比较复杂,有子类有数组,还是挺麻烦的。wcf倒是没试过,不过为了排序,引入wcf不知道到底值不值。