查询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 拖放效果实现代码
Jan 22 Javascript
js 实现复制到粘贴板的功能代码
May 13 Javascript
javascript多种数据类型表格排序代码分析
Sep 11 Javascript
javascript获取网页中指定节点的父节点、子节点的方法小结
Apr 24 Javascript
深入理解JavaScript是如何实现继承的
Dec 12 Javascript
微信小程序 视图层(xx.xml)和逻辑层(xx.js)详细介绍
Oct 13 Javascript
layer弹出层全屏及关闭方法
Aug 17 Javascript
vue-swiper的使用教程
Aug 30 Javascript
js实现for循环跳过undefined值示例
Jul 02 Javascript
layui-select动态选中值的例子
Sep 23 Javascript
在vue中使用echarts(折线图的demo,markline用法)
Jul 20 Javascript
vue Cli 环境删除与重装教程 - 版本文档
Sep 11 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
Smarty模板引擎缓存机制详解
2016/05/23 PHP
详解如何在云服务器上部署Laravel
2017/06/30 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
2018/08/21 PHP
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
JavaScript 存在陷阱 删除某一区域所有节点
2010/05/10 Javascript
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
JavaScript 创建运动框架的实现代码
2013/05/08 Javascript
jQuery当鼠标悬停时放大图片的效果实例
2013/07/03 Javascript
JS判定是否原生方法
2013/07/22 Javascript
给文字加上着重号的JS代码
2013/11/12 Javascript
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
2013/12/11 Javascript
微信小程序的动画效果详解
2017/01/18 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
2017/04/25 Javascript
纯JS实现只能输入数字的简单代码
2017/06/21 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
jQuery实现菜单的显示和隐藏功能示例
2018/07/24 jQuery
在vue中解决提示警告 for循环报错的方法
2018/09/28 Javascript
微信小程序使用for循环动态渲染页面操作示例
2018/12/25 Javascript
VUE解决微信签名及SPA微信invalid signature问题(完美处理)
2019/03/29 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
2019/11/07 Javascript
[01:48]完美圣典齐天大圣至宝宣传片
2016/12/17 DOTA
Python获取远程文件大小的函数代码分享
2014/05/13 Python
Python在Windows和在Linux下调用动态链接库的教程
2015/08/18 Python
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
手把手教你python实现SVM算法
2017/12/27 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
2018/05/04 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
python xlsxwriter模块的使用
2020/12/24 Python
斯凯奇美国官网:SKECHERS美国
2016/08/20 全球购物
POS解决方案:MUNBYN(热敏打印机、条形码扫描仪)
2020/06/09 全球购物
自动化系在校本科生求职信
2013/10/23 职场文书
教师师德反思材料
2014/02/15 职场文书
护理工作个人总结
2015/03/03 职场文书
未婚证明格式
2015/06/15 职场文书
烛光里的微笑观后感
2015/06/17 职场文书
详解nginx.conf 中 root 目录设置问题
2021/04/01 Servers