查询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 HashTable
Jan 22 Javascript
Javascript中call的两种用法实例
Dec 13 Javascript
js 弹出新页面避免被浏览器、ad拦截的一种新方法
Apr 30 Javascript
jQuery 插件开发指南
Nov 14 Javascript
使用RequireJS优化JavaScript引用代码的方法
Jul 01 Javascript
jQuery实现选项卡切换效果简单演示
Dec 09 Javascript
JavaScript实现图片滑动切换的代码示例分享
Mar 06 Javascript
Bootstrap每天必学之折叠
Apr 12 Javascript
详解jQuery选择器
Dec 21 Javascript
Vue 过渡实现轮播图效果
Mar 27 Javascript
AngularJS中$http的交互问题
Mar 29 Javascript
JS实现排行榜文字向上滚动轮播效果
Nov 26 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和ACCESS写聊天室(四)
2006/10/09 PHP
深入PHP获取随机数字和字母的方法详解
2013/06/06 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
2015/04/15 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
PHP实现的构造sql语句类实例
2016/02/03 PHP
php实现XML和数组的相互转化功能示例
2017/02/08 PHP
如何重写Laravel异常处理类详解
2020/12/20 PHP
JQuery 无废话系列教程(一) jquery入门 [推荐]
2009/06/23 Javascript
javascript 强制刷新页面的实现代码
2009/12/13 Javascript
JavaScript模板入门介绍
2012/09/26 Javascript
如何制作浮动广告 JavaScript制作浮动广告代码
2012/12/30 Javascript
jQuery中prepend()方法使用详解
2015/08/11 Javascript
js变形金刚文字特效代码分享
2015/08/20 Javascript
基于JavaScript实现定时跳转到指定页面
2016/01/01 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
Angular.js中定时器循环的3种方法总结
2017/04/27 Javascript
浅谈关于.vue文件中style的scoped属性
2017/08/19 Javascript
jQuery简单实现对数组去重及排序操作实例
2017/10/31 jQuery
原生JavaScrpit中异步请求Ajax实现方法
2017/11/03 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
2020/03/09 Javascript
JavaScript Array.flat()函数用法解析
2020/09/02 Javascript
pycharm 使用心得(三)Hello world!
2014/06/05 Python
python使用cPickle模块序列化实例
2014/09/25 Python
Python实现的随机森林算法与简单总结
2018/01/30 Python
Python绘图实现显示中文
2019/12/04 Python
IronPython连接MySQL的方法步骤
2019/12/27 Python
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
日本高岛屋百货购物网站:TAKASHIMAYA
2019/03/24 全球购物
法国房车租赁网站:Yescapa
2019/08/26 全球购物
经典优秀个人求职信分享
2013/12/12 职场文书
完美的中文自荐信
2014/05/24 职场文书
2015年煤矿工作总结
2015/04/28 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
如何利用python创作字符画
2022/06/25 Python