查询json的数据结构的8种方式简介


Posted in Javascript onMarch 10, 2014

查询json的数据结构的8种方式:

JsonSQL

JsonSQL实现了使用SQL select语句在json数据结构中查询的功能。主页:http://www.trentrichardson.com/jsonsql/

例子:

jsonsql.query("select * from json.channel.items order by title desc",json);

JSONPath

JSONPath就像是针对JSON数据结构的XPath。主页:http://goessner.net/articles/JsonPath/

例子:

jsonPath( books, '$..book[(@.length-1)]')

jfunk

jFunk允许你检索(很快会加入管理功能)复杂的JSON或Javascript对象。jFunk API的设计几乎与jQuery API类似。它直接复制了jQuery的API,除了那些针对DOM的API。
主页:http://code.google.com/p/jfunk/

例子:

Jf("> vegetables > *[color=Orange]",Food).get();

TaffyDB

你过去有没有注意到Javascript对象的字面值看起来很像记录?如果你把他们包裹在一个数组里面,那么它们看起来有没有像一个数据库表?TaffyDB是一个Javascript库,它提供了强大的数据库功能以实现之前的想法,大大改善了你在Javascript中使用数据的方式。
主页:http://www.taffydb.com/

例子:

var kelly = friends({id:2}).first();

linq.js

linq.js——Javascript中的LINQ

var queryResult2 = Enumerable.From(jsonArray)
    .Where("$.user.id < 200")
    .OrderBy("$.user.screen_name")
    .Select("$.user.screen_name + ':' + $.text")
    .ToArray();

objeq

objeq是一个简单的库,实现了对POJSO(Plain-Old JavaScript Objects,普通的Javascript对象)的实时查询。主页:https://github.com/agilosoftware/objeq

var res = $objeq(data, "age > 40 && gender == 'female' -> name");
// --> Returns ['Jessica']

(译注:它使用了Javascript的property setters,所以它只能工作在较新的浏览器上)

json:select()

使用类CSS选择符来查询JSON。主页:http://jsonselect.org/#tryit

.lang:val("Bulgarian") ~ .level

Paul的编程珠玑中的Javascript数组过滤方法,主页:http://www.paulfree.com/28/javascript-array-filtering/#more-28

var a = [1,2,3,4,5,6,7,8,9,10];
 // return everything
a.where( "( ) => true" ) ;
//  --> [1,2,3,4,5,6,7,8,9,10]
// return even numbers
a.where( "( n, i ) => n % 2 == 0" ) ;
//  --> [2,4,6,8,10]
// query first 6 products whose category begins with 'con' using extra param and regular expression
products.where( "( el, i, res, param ) => res.length <= 6 && param.test( el.cat )", /^con/i);
// using customer table data from SQL Server's northwind database...    
customers.where( "( el, i, res, param ) => el.country == param", "USA" );

目前这是我最喜欢的查询JSON数据结构的方法。它非常的简单,并且据作者所说它非常快。
它背后的理念和John Resig的JavaScript Micro-Templating类似:使用正确表达式将一段非常简单的字符串转换成Javascript函数。
当然,还有更多强大的解决方案。Paul实现的原型还缺少对过滤表达式的语法检查,但是我相信你应该可以自己解决Javscript的语法检查。

Javascript 相关文章推荐
javascript实现控制div颜色
Jul 07 Javascript
函数window.open实现关闭所有的子窗口
Aug 03 Javascript
JavaScript实现节点的删除与序号重建实例
Aug 05 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
Oct 10 Javascript
JS返回只包含数字类型的数组实例分析
Dec 16 Javascript
微信小程序 弹幕功能简单实例
Feb 14 Javascript
Angular中ng-bind和ng-model的区别实例详解
Apr 10 Javascript
jQuery替换节点元素的操作方法
Mar 18 jQuery
JS中Promise函数then的奥秘探究
Jul 30 Javascript
对layui中表单元素的使用详解
Aug 15 Javascript
微信小程序如何调用新闻接口实现列表循环
Jul 02 Javascript
JS使用正则表达式判断输入框失去焦点事件
Oct 16 Javascript
js 3秒后跳转页面的实现代码
Mar 10 #Javascript
php is_numberic函数造成的SQL注入漏洞
Mar 10 #Javascript
关于JavaScript对象的动态选择及遍历对象
Mar 10 #Javascript
使用js操作css实现js改变背景图片示例
Mar 10 #Javascript
红米手机抢购的js代码
Mar 10 #Javascript
按下回车键指向下一个位置的一个函数代码
Mar 10 #Javascript
用js判断输入是否为中文的函数
Mar 10 #Javascript
You might like
星际RPG字典
2020/03/04 星际争霸
留言板翻页的实现详解
2006/10/09 PHP
PHP4实际应用经验篇(8)
2006/10/09 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
2014/06/10 PHP
Laravel 实现关系模型取出需要的字段
2019/10/10 PHP
php命令行模式代码实例详解
2021/02/26 PHP
js报错 Object doesn't support this property or method的原因分析
2011/03/31 Javascript
修改jQuery Validation里默认的验证方法
2012/02/14 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
2015/09/16 Javascript
Angularjs中使用指令绑定点击事件的方法
2017/03/30 Javascript
jquery easyui如何实现格式化列
2017/07/30 jQuery
javascript修改浏览器title方法 JS动态修改浏览器标题
2017/11/30 Javascript
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
vue实现一个6个输入框的验证码输入组件功能的实例代码
2020/06/29 Javascript
[13:18]《一刀刀一天》之DOTA全时刻21:详解TI新赛制 A队再露獠牙
2014/06/24 DOTA
python解决方案:WindowsError: [Error 2]
2016/08/28 Python
Tensorflow中使用tfrecord方式读取数据的方法
2018/06/19 Python
selenium3+python3环境搭建教程图解
2018/12/07 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
使用Python和Scribus创建一个RGB立方体的方法
2019/07/17 Python
python3注册全局热键的实现
2020/03/22 Python
对Python 字典元素进行删除的方法
2020/07/31 Python
C++和python实现阿姆斯特朗数字查找实例代码
2020/12/07 Python
安装python依赖包psycopg2来调用postgresql的操作
2021/01/01 Python
Python plt 利用subplot 实现在一张画布同时画多张图
2021/02/26 Python
纯CSS3实现运行时钟的示例代码
2021/01/25 HTML / CSS
瑞士隐形眼镜和护理产品网上商店:Linsenklick
2019/10/21 全球购物
初中生学习的自我评价
2013/11/14 职场文书
幼儿园保育员辞职信
2014/01/12 职场文书
项目考察欢迎辞
2014/01/17 职场文书
电大毕业自我鉴定
2014/02/03 职场文书
祖国在我心中演讲稿600字
2014/05/04 职场文书
团队口号大全
2014/06/06 职场文书
教师四风问题整改措施
2014/09/25 职场文书
研究生毕业论文导师评语
2014/12/31 职场文书
如何写好开幕词?
2019/06/24 职场文书