查询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 事件参考手册
Dec 24 Javascript
js客户端快捷键管理类的较完整实现和应用
Jun 08 Javascript
js用闭包遍历树状数组的方法
Mar 19 Javascript
JavaScript中如何通过arguments对象实现对象的重载
May 12 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
Nov 20 Javascript
Mongoose经常返回e11000 error的原因分析
Mar 29 Javascript
Angular2 自定义validators的实现方法
Jul 05 Javascript
基于JS脚本语言的基础语法详解
Jul 22 Javascript
angular.extend方法的具体使用
Sep 14 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
Sep 18 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
Oct 30 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
Sep 03 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
PHPMYADMIN 简明安装教程 推荐
2010/03/07 PHP
php输出xml格式字符串(用的这个)
2012/07/12 PHP
php中cookie的使用方法
2014/03/29 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
javascript一个无懈可击的实例化XMLHttpRequest的方法
2010/10/13 Javascript
JS实现拖动示例代码
2013/11/01 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
一个很有趣3D球状标签云兼容IE8
2014/08/22 Javascript
JavaScript数据类型详解
2015/04/01 Javascript
js验证框架之RealyEasy验证详解
2016/06/08 Javascript
Ext JS 实现建议词模糊动态搜索功能
2017/05/13 Javascript
20行js代码实现的贪吃蛇小游戏
2017/06/20 Javascript
layui中select,radio设置不生效的解决方法
2019/09/05 Javascript
[48:44]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS HGT
2014/05/22 DOTA
使用Python写CUDA程序的方法
2017/03/27 Python
获取Django项目的全部url方法详解
2017/10/26 Python
用Python写一段用户登录的程序代码
2018/04/22 Python
Python实现随机生成手机号及正则验证手机号的方法
2018/04/25 Python
代码实例讲解python3的编码问题
2019/07/08 Python
python设置代理和添加镜像源的方法
2020/02/14 Python
Python2.6版本pip安装步骤解析
2020/08/17 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
python对输出的奇数偶数排序实例代码
2020/12/04 Python
python3.9实现pyinstaller打包python文件成exe
2020/12/13 Python
HTML5利用约束验证API来检查表单的输入数据的代码实例
2016/12/20 HTML / CSS
Tirendo比利时:在线购买轮胎
2018/10/22 全球购物
希腊香水和化妆品购物网站:Parfimo.gr
2019/10/03 全球购物
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
住房公积金接收函
2014/01/09 职场文书
酒店节能减排方案
2014/05/26 职场文书
社区清明节活动总结
2014/07/04 职场文书
爱心募捐通知范文
2015/04/27 职场文书
2015年大学学生会工作总结
2015/05/13 职场文书
2016应届毕业生实习评语
2015/12/01 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
详解MySQL连接挂死的原因
2021/05/18 MySQL