在JavaScript中,JSON是一种非常重要的数据格式,key:value的形式比XML那种复杂的标签结构更容易理解,代码量也更小,很多人倾向于使用它作为EXT的数据交换格式。

JsonReader支持分页,与JSON数据对应格式如下:

 totalProperty:   json数据中,保存总记录数的属性
successProperty:  json数据中,保存是否返回成功的属性名
 root:       json数据中,保存记录集的属性的属性名
id:             json数据中,记录中主键所对应的列的属性名

例如:为Json- Reader准备的JSON数据如下面的代码所示:

//JSON数据

var json = { 'results': 2,

'rows': [

{ 'id': 1, 'name': 'Bill', occupation: 'Gardener' },

{ 'id': 2, 'name': 'Ben', occupation: 'Horticulturalist' }

]

             };  
在JsonReader中设置为如下代码: 
   //JsonReader
            var reader = new Ext.data.JsonReader(
                {                    totalProperty: "results",  //totalRecords属性由json.results得到
                    successProperty: true,    //json数据中,保存是否返回成功的属性名
                    root: "rows",            //构造元数据的数组由json.rows得到
                    id: "id"                //id由json.id得到
                }, [
                    { name: 'name', mapping: 'name' },
                    { name: 'occupation'}            //如果name与mapping同名,可以省略mapping
                ] 
             ); 

jsonreader从proxy中读取的数据需要进行解析,这些数据转换成Record数组后才能提供给Ext.data.Store使用。

在JavaScript中,JSON是一种非常重要的数据格式,key:value的形式比XML那种复杂的标签结构更容易理解,代码量也更小,很多人倾向于使用它作为EXT的数据交换格式。为JsonReader准备的JSON数据如下面的代码所示:

var data = {

id:0,

totalProperty:2,

successProperty:true,

root:[

{id:'id1',name:'name1',descn:'descn1'},

{id:'id2',name:'name2',descn:'descn2'}

]

};

与数组相比,JSON的最大优点就是支持分页,我们可以使用totalProperty参数表示数据的总量。successProperty参数是可选的,可以用它判断当前请求是否执行成功,进而判断是否进行数据加载。在不希望JsonReader处理响应数据时,可以把successProperty设置成false。

现在来讨论一下JsonReader,看看它是如何与上面的JSON数据对应的,如下面的代码所示。

var reader = new Ext.data.JsonReader({

successProperty: "successproperty",

totalProperty: "totalProperty",

root: "root",

id: "id"

}, [

{name:'id',mapping:'id'},

{name:'name',mapping:'name'},

{name:'descn',mapping:'descn'}

]);

因为name和mapping部分的内容是相同的,其实这里的mapping可以省略,默认会用name参数从JSON中获得对应的数据。如果不想与JSON里的名字一样,也可以使用mapping修改。不过,mapping在这里还有其他用途,如代码清单10-3所示:

JsonReader设置mapping进行数据映射

var data = {

id:0,

totalProperty:2,

successProperty:true,

root:[

{id:'id1',name:'name1',descn:'descn1',person:{

id:1,name:'man',sex:'male'

}},

{id:'id2',name:'name2',descn:'descn2',person:{

id:2,name:'woman',sex:'female'

}}

] };

var reader = new Ext.data.JsonReader({

successProperty: "successproperty",

totalProperty: "totalProperty",

root: "root",

id: "id"

}, [

'id','name','descn',

{name:'person_name',mapping:'person.name'},

{name:'person_sex',mapping:'person.sex'}

]);

extjs关于jsonreader相关推荐

  1. ExtJS实现完美Grid(2)--分组统计

    我们在<ExtJS实现完美Grid(1)>的基础改造一下,让它能够实现分页面统计功能首先我们在页面要引入分组插件,因为ext-all.js不包括分组功能,可以在ext下载的examples ...

  2. ExtJs 备忘录(6)—— GirdPanl表格(二) [ 搜索分页 ]

    前言 近些天对于厚积薄发有深刻的理解,尤其是月末那两天,很想再写两篇文章,保持每周一篇--每月至少四篇以上的文章.写文章分两种情况:一种情况是已经积累了许多经验,写起来轻松且得心应手,内容和系列文章容 ...

  3. EXTjs grid与json数据 转载

    刚开始学习extjs,真是摸不着头呀. 做了半天才搞出一个grid显示数据.在网上找了个数据做了个测试. 一下是代码. 首先:把ext-3.1.0文件夹放到根目录下. 新建一个Default.aspx ...

  4. JS、JQuery和ExtJs的跨域处理

    1.什么是跨域? 跨域,JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a ...

  5. ExtJs Grid 合计 [Ext | GridPanel | GridSummary]

    前言 五一期间学习Ext很痛苦也很快乐,到现在也算是小有所成,陆陆续续的开始在项目中使用,Ext的表格据统计是使用率最高的一个组件,实在是很强大,但我以为关键是很漂亮,而他本身并不支持数据的统计功能, ...

  6. extjs中元数据_Extjs中Store小总结

    http://blog.csdn.net/without0815/article/details/7798170 1.什么是store? Store类似于一个本地仓库(即数据存储器),包括有 Arra ...

  7. ExtJs + .NET MVC 不分页处理大数据

    刷微博已经成为大家的一种生活方式,我今天要介绍的功能就很类似刷微博. 当我们需要将大数据(比如百万条数据)显示在页面上的时候,显然一次加载是不现实的,用户体验很差.当然,你可能会想到采用分也显示,但是 ...

  8. extJS 中 ext.data 介绍

    ext.data 最主要的功能是获取和组织数据结构,并和特定控件联系起来,于是,Ext.data成了数据的来源,负责显示数据. Ext.data在命名空间中定义了一系列store.reader和pro ...

  9. 用ExtJs+Linq+Wcf打造简单grid

    本系列文章列表 1)Ajax访问Xml Web Service的安全问题以及解决方案 2)Ajax与WCF交互-WCF之美 3) Ajax与Wcf交互-JSON 4) ExtJs与WCF交互:生成树 ...

最新文章

  1. tf.matmul() 和tf.multiply() 的区别
  2. Java常见问题汇总
  3. react-native scrollview触摸滚动事件
  4. 中国香港地区 DDoS- botnet 态势分析
  5. javaScript执行环境、作用域链与闭包
  6. 旺财速啃H5框架之Bootstrap(五)
  7. java table 设置长度_Java字节码lookupswitch和tableswitch总指令长度
  8. ipython快捷键
  9. c语言中输出值作用,printf在c语言中什么意思
  10. Windows Vista操作系统秘技(1-5)
  11. 微信小程序之安全调用外部API
  12. CC2540/CC2541蓝牙4.0BLE协议栈开发
  13. SQL Server触发器简单例子
  14. 教你怎么卸载Office最干净?
  15. JavaSE方法(构造方法)与方法重载基础练习题
  16. Oracle EBS 键弹性域 段限定词取值
  17. cpufreq 代码分析
  18. 壁纸|苹果Live壁纸以及静态壁纸,给大家分享点
  19. 淘宝详情页排版布局怎么做?大神导航,一个神奇的网站,从此开启大神之路!
  20. 搭档之家:就离谱!!! “假通知书”在淘宝突然泛滥 阿里:已处罚,欢迎大家举报

热门文章

  1. php sql中regexp,[NCTF2019]SQLi(regexp注入)
  2. loadingcache 有重试机制吗_重试机制的实现
  3. 卷积神经网络基础:(6)卷积神经网络原理
  4. harris角点检测与绘制。通过滑动滚动条来控制阈值,以控制检测角点的数量并返回角点坐标
  5. 环回测试能够提供什么信息_以太网测试仪
  6. UE5使用MetaHuman构建超现实的角色
  7. Unreal Engine4 可视化虚拟现实全流程学习教程
  8. ue4商城资源 The Forest v1.5 森林景观场景
  9. ceph中使用ceph-objectstore-tool将pg从incomplete标记为complete
  10. 结构体解决念数字问题