查询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 相关文章推荐
JQuery从头学起第三讲
Jul 06 Javascript
得到jQuery detach()后节点中的某个值实现代码
Feb 05 Javascript
原生js获取宽高与jquery获取宽高的方法关系对比
Apr 04 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
Feb 26 Javascript
Jquery easyui 实现动态树
Nov 17 Javascript
全面了解addEventListener和on的区别
Jul 14 Javascript
js严格模式总结(分享)
Aug 22 Javascript
jQuery简单实现向列表动态添加新元素的方法示例
Dec 25 jQuery
jQuery实现定时隐藏对话框的方法分析
Feb 12 jQuery
vue.js 实现点击展开收起动画效果
Jul 07 Javascript
新手简单了解vue
May 29 Javascript
vue 使用原生组件上传图片的实例
Sep 08 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
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
php+mysqli使用预处理技术进行数据库查询的方法
2015/01/28 PHP
win7安装php框架Yii的方法
2016/01/25 PHP
Yii2框架dropDownList下拉菜单用法实例分析
2016/07/18 PHP
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
利用js实现前台动态添加文本框,后台获取文本框内容(示例代码)
2013/11/25 Javascript
javascript学习笔记之10个原生技巧
2014/05/21 Javascript
JQuery入门基础小实例(1)
2015/09/17 Javascript
jqueryMobile使用示例分享
2016/01/12 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
2016/04/23 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
2016/05/17 Javascript
详解JavaScript中的事件流和事件处理程序
2016/05/20 Javascript
Angular设置title信息解决SEO方面存在问题
2016/08/19 Javascript
原生javascript实现读写CSS样式的方法详解
2017/02/20 Javascript
JavaScript数据结构中串的表示与应用实例
2017/04/12 Javascript
微信小程序实现页面跳转传值的方法
2017/10/12 Javascript
Vue中之nextTick函数源码分析详解
2017/10/17 Javascript
webpack4+react多页面架构的实现
2018/10/25 Javascript
express如何解决ajax跨域访问session失效问题详解
2019/06/20 Javascript
基于python的汉字转GBK码实现代码
2012/02/19 Python
python重试装饰器示例
2014/02/11 Python
Python Flask基础教程示例代码
2018/02/07 Python
解决使用PyCharm时无法启动控制台的问题
2019/01/19 Python
Python 日志logging模块用法简单示例
2019/10/18 Python
利用setuptools打包python程序的方法步骤
2020/01/18 Python
Restful_framework视图组件代码实例解析
2020/11/17 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
2020/12/08 Python
python 基于UDP协议套接字通信的实现
2021/01/22 Python
css3和jquery实现自定义checkbox和radiobox组件
2014/04/22 HTML / CSS
Canvas波浪花环的示例代码
2020/08/21 HTML / CSS
Paul’s Boutique官网:英国时尚手袋品牌
2018/03/31 全球购物
2014年文学毕业生自我鉴定
2014/04/23 职场文书
售后客服工作职责
2014/06/16 职场文书
捐款通知怎么写
2015/04/24 职场文书
php 防护xss,PHP的防御XSS注入的终极解决方案
2021/04/01 PHP
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python