注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

星期五

明天不上班

 
 
 

日志

 
 
关于我

一个特立独行的Java程序员,比较宅,上上网,写博客,听音乐,看电影。

网易考拉推荐

Dojo中的JSON查询工具  

2014-04-04 23:37:31|  分类: Javascript |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Dojo中的store实现一套JSON数据存储,查询和更改的工具,它是针对具有特定结构的JSON数据,JSON数据一旦复杂或毫无规律,这套工具就没有作用了。之前在《查询JSON数据的8种方法》中介绍了很多工具库, 这些工具库都很棒,但是其实dojo本身也提供了一个针对复杂JSON数据的工具dojox.json.query.
require(["dojox/json/query"], function(JSONQuery){
var data = [
{ id: 1, permissionName: 'Log in', checkBox: 2
},
{ id: 2, permissionName: 'Reports control', checkBox: 0,
children: [
{id:6, permissionName: 'Stand Report Control', checkBox: 2},
{id:7, permissionName: 'Custom Report Control', checkBox: 2}
]
},
{ id: 3, permissionName: 'System Log', checkBox: 0,
children:[
{id:8, permissionName: 'View', checkBox: 0,
children:[
{id:11, permissionName: 'XXXXXX', checkBox: 2},
{id:13, permissionName: 'XXXXXX', checkBox: 2}
]
}
]
}];

//表达式 查找到checkBox的值为2的对象
var r0 = JSONQuery("[?checkBox=2]", data);
console.log(r0);

//表达式 递归查找到checkBox的值为2的对象
var r1 = JSONQuery("..[?checkBox=2]", data);
console.log(r1);

//递归对象查找id
var r2 = JSONQuery("..id", data);
console.log(r2)

//查找对象的id,数组无效
var r3 = JSONQuery("id", {id: 10, permissionName: "LLL"});
console.log(r3);

//数组序号为2的对象的属性的值
var r4 = JSONQuery("[2].id", data);
console.log(r4);

//表达式 递归查找到checkBox的值为2的对象的id的值
var r1 = JSONQuery("..[?checkBox=2][=id]", data);
console.log(r1);

});
输出结果
Dojo中的JSON查询工具 - 星期五 - 星期五
 
详细介绍其中表达式的用法
表达式分为两类
  • .属性 - This will return the provided property of the object(返回属性的值)
  • [表达式] - This returns the property name/index defined by the evaluation of the provided expression (根据表达式定义返回属性 name/index)

表达式 介绍几个常用的

  • [?表达式] 返回表达式为true的对象
  • [/字段] /表示排序升序
  • [=字段] 返回不是对象,而是对象中的字段
  • ..[?表达式]  表示递归查找
  • 它们也可以组合使用,具体看看上面的例子
 更多用法,见参考资料
参考资料
http://dojotoolkit.org/reference-guide/1.9/dojox/json/query.html#id7

  评论这张
 
阅读(218)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017