读书人

mvc3里json生成的顺序是怎么控制的

发布时间: 2013-07-08 14:13:00 作者: rapoo

mvc3里,json生成的顺序是如何控制的?
我有几个类是继承的,想先生成基类的属性,不过json返回的基类属性都放在最后了
[解决办法]
这个有必要纠结吗。。。。。
[解决办法]
堆栈 先进后出~
[解决办法]
你取得时候难道还不是一次取到数据,他们是一个整体没什么好纠结的。
如果你是要先用这个属性的话,就在序列化的之前把属性的位子该下,
可以用Linq 转成一个匿名对象在序列化。
[解决办法]
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 这么访问的,要纠结顺序的话,有些费解.
[解决办法]
//转换对象
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不知道到底值不值。



wcf有rest

读书人网 >asp.net

热点推荐