查询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 相关文章推荐
seajs中模块的解析规则详解和模块使用总结
Mar 12 Javascript
将HTML的左右尖括号等转义成实体形式的两种实现方式
May 04 Javascript
jquery实现鼠标滑过小图查看大图的方法
Jul 20 Javascript
js鼠标点击图片切换效果实现代码
Nov 19 Javascript
浅谈JavaScript的push(),pop(),concat()方法
Jun 03 Javascript
AngularJS基础 ng-repeat 指令简单示例
Aug 03 Javascript
微信小程序 Page()函数详解
Oct 17 Javascript
在js里怎么实现Xcode里的callFuncN方法(详解)
Nov 05 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
Nov 30 Javascript
微信小程序实现侧边分类栏
Oct 21 Javascript
v-slot和slot、slot-scope之间相互替换实例
Sep 04 Javascript
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
Jan 29 jQuery
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异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
2011/05/19 PHP
浅析PHP绘图技术
2013/07/03 PHP
PHP进阶学习之垃圾回收机制详解
2019/06/18 PHP
PHP实现字母数字混合验证码功能
2019/07/11 PHP
jquery索引在使用中的一些困惑
2013/10/24 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
JQuery以JSON方式提交数据到服务端示例代码
2014/05/05 Javascript
connect中间件session、cookie的使用方法分享
2014/06/17 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
JS实现在网页中弹出一个输入框的方法
2015/03/03 Javascript
JavaScript中的立即执行函数表达式介绍
2015/03/15 Javascript
vue.js学习之递归组件
2016/12/13 Javascript
VueJs路由跳转——vue-router的使用详解
2017/01/10 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
React Native自定义控件底部抽屉菜单的示例
2018/02/08 Javascript
详解Nuxt.js部署及踩过的坑
2018/08/07 Javascript
vue服务端渲染页面缓存和组件缓存的实例详解
2018/09/18 Javascript
Vue+webpack实现懒加载过程解析
2020/02/17 Javascript
在vue中动态修改css其中一个属性值操作
2020/12/07 Vue.js
python生成不重复随机数和对list乱序的解决方法
2018/04/09 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
Python PIL读取的图像发生自动旋转的实现方法
2019/07/05 Python
33个Python爬虫项目实战(推荐)
2019/07/08 Python
详解numpy矩阵的创建与数据类型
2019/10/18 Python
详解django使用include无法跳转的解决方法
2020/03/19 Python
Python 删除List元素的三种方法remove、pop、del
2020/11/16 Python
Wedgwood美国官网:英国骨瓷,精美礼品及家居装饰
2018/02/17 全球购物
乐高瑞士官方商店:LEGO CH
2020/08/16 全球购物
北京某科技有限公司C# .net笔试题
2014/09/27 面试题
关于爱情的广播稿
2014/01/16 职场文书
生日寿宴答谢词
2014/01/19 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
法院答辩状格式
2015/05/22 职场文书
初中团委工作总结
2015/08/13 职场文书
python 如何做一个识别率百分百的OCR
2021/05/29 Python