查询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编程起步(第三课)
Feb 27 Javascript
用js小类库获取浏览器的高度和宽度信息
Jan 15 Javascript
jQuery中animate用法实例分析
Mar 09 Javascript
JavaScript事件 &quot;事件对象&quot;的注意要点
Jan 14 Javascript
node打造微信个人号机器人的方法示例
Apr 26 Javascript
JavaScript事件对象event用法分析
Jul 27 Javascript
支付宝小程序自定义弹窗dialog插件的实现代码
Nov 30 Javascript
实例讲解JavaScript截取字符串
Nov 30 Javascript
Echart折线图手柄触发事件示例详解
Dec 16 Javascript
详解Vue中组件的缓存
Apr 20 Javascript
Django模板继承 extend标签实例代码详解
May 16 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
Feb 06 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
php中get_defined_constants函数用法实例分析
2015/05/12 PHP
通过ifame指向的页面高度调整iframe的高度
2006/10/05 Javascript
XHTML下,JS浮动代码失效的问题
2009/11/12 Javascript
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
2011/12/26 Javascript
JS获取节点的兄弟,父级,子级元素的方法
2014/01/09 Javascript
qq悬浮代码(兼容各个浏览器)
2014/01/29 Javascript
javascript 实现map集合
2015/04/03 Javascript
JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
2015/12/14 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
2016/03/25 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
2016/05/30 Javascript
对象转换为原始值的实现方法
2016/06/06 Javascript
jQuery通过ajax方法获取json数据不执行success的原因及解决方法
2016/10/15 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
2017/02/06 Javascript
JS中mouseup事件丢失的原因与解决办法
2017/06/14 Javascript
关于vue-resource报错450的解决方案
2017/07/24 Javascript
JavaScript中的return布尔值的用法和原理解析
2017/08/14 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
vue 自定义 select内置组件
2018/04/10 Javascript
使用js实现将后台传入的json数据放在前台显示
2018/08/06 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
vue 插件的方法代码详解
2019/06/06 Javascript
JS立即执行的匿名函数用法分析
2019/11/04 Javascript
原生js实现ajax请求和JSONP跨域请求操作示例
2020/03/14 Javascript
vue 导出文件,携带请求头token操作
2020/09/10 Javascript
[01:36:19]Secret vs NB 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python实现一个函数版的名片管理系统过程解析
2019/08/27 Python
python生成随机红包的实例写法
2019/09/02 Python
基于django和dropzone.js实现上传文件
2020/11/24 Python
css3设置box-pack和box-align让div里面的元素垂直居中
2014/09/01 HTML / CSS
日本著名的平价时尚女性购物网站:Fifth
2016/08/24 全球购物
北京麒麟网信息技术有限公司网络游戏测试面试题
2013/09/28 面试题
承诺书的格式范文
2014/03/28 职场文书
教师爱岗敬业演讲稿
2014/05/05 职场文书
工程款催款函
2015/06/24 职场文书
《原神》新角色演示“神里绫人:林隐泓洄” 宠妹狂魔
2022/04/03 其他游戏
MySQL控制流函数(-if ,elseif,else,case...when)
2022/07/07 MySQL