查询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 相关文章推荐
始终在屏幕中间显示Div的代码(css+js)
Mar 10 Javascript
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
Jul 04 Javascript
6款经典实用的jQuery小插件及源码(对话框/提示工具等等)
Feb 04 Javascript
JQuery $.each遍历JavaScript数组对象实例
Sep 01 Javascript
JavaScript添加随滚动条滚动窗体的方法
Feb 23 Javascript
javascript 网页进度条简单实例
Feb 22 Javascript
Vue2.0设置全局样式(less/sass和css)
Nov 18 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
Sep 27 Javascript
深入理解react 组件类型及使用场景
Mar 07 Javascript
浅谈Javascript中的对象和继承
Apr 19 Javascript
Vue之封装公用变量以及实现方式
Jul 31 Javascript
在vue中配置不同的代理同时访问不同的后台操作
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
PHP学习 运算符与运算符优先级
2008/06/15 PHP
php 记录进行累加并显示总时长为秒的结果
2011/11/04 PHP
浅谈PHP中JSON数据操作
2015/07/01 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
利用JS重写Cognos右键菜单的实现代码
2010/04/11 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
2013/01/15 Javascript
多引号嵌套的变量命名的问题
2014/05/09 Javascript
基于socket.io和node.js搭建即时通信系统
2014/07/30 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
AngularJS中过滤器的使用与自定义实例代码
2016/09/17 Javascript
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
2017/03/03 Javascript
angular2 ng build部署后base文件路径问题详细解答
2017/07/15 Javascript
vue实现移动端图片裁剪上传功能
2020/08/18 Javascript
微信小程序实现根据字母选择城市功能
2017/08/16 Javascript
在Mac下彻底卸载node和npm的方法
2018/05/16 Javascript
layui实现左侧菜单点击右侧内容区显示
2019/07/26 Javascript
JavaScript实现省份城市的三级联动
2020/02/11 Javascript
[55:48]VGJ.S vs TNC Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python实现根据指定端口探测服务器/模块部署的方法
2014/08/25 Python
Python连接DB2数据库
2016/08/27 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
python os.path.isfile 的使用误区详解
2019/11/29 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
露营世界:Camping World
2017/02/02 全球购物
Monnier Freres中文官网:法国领先的奢侈品配饰在线零售商
2017/11/01 全球购物
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
.NET概念性的面试题
2012/02/29 面试题
酒店前台接待岗位职责
2013/12/03 职场文书
师生聚会感言
2014/01/26 职场文书
个人银行贷款担保书
2014/04/01 职场文书
企业法人任命书
2015/09/21 职场文书
党员廉政准则心得体会
2016/01/20 职场文书
css3带你实现3D转换效果
2022/02/24 HTML / CSS
mysql数据库实现设置字段长度
2022/06/10 MySQL