查询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 相关文章推荐
js浮动图片的动态效果
Jul 10 Javascript
jquery1.10给新增元素绑定事件的方法
Mar 06 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
May 20 Javascript
Javascript获取当前时间函数和时间操作小结
Oct 01 Javascript
js实现带缓冲效果的仿QQ面板折叠菜单代码
Sep 06 Javascript
基于jQuery的select下拉框选择触发事件实例分析
Nov 18 Javascript
高效的jQuery代码编写技巧总结
Feb 22 Javascript
老生常谈JavaScript面向对象基础与this指向问题
Oct 16 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
Dec 29 Javascript
vuex vue简单使用知识点总结
Aug 29 Javascript
vue-cli点击实现全屏功能
Mar 07 Javascript
浅谈vue中get请求解决传输数据是数组格式的问题
Aug 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
用Zend Encode编写开发PHP程序
2010/02/21 PHP
php中json_encode中文编码问题分析
2011/09/13 PHP
常见php数据文件缓存类汇总
2014/12/05 PHP
php使用google地图应用实例
2014/12/31 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
2016/11/05 PHP
AJAX的使用方法详解
2017/04/29 PHP
jquery 图片Silhouette Fadeins渐显效果
2010/02/07 Javascript
如何用ajax来创建一个XMLHttpRequest对象
2012/12/10 Javascript
JavaScript 中的日期和时间及表示标准介绍
2013/08/21 Javascript
js中的for如何实现foreach中的遍历
2014/05/31 Javascript
JavaScript学习笔记之Cookie对象
2015/01/22 Javascript
jQuery简单几行代码实现tab切换
2015/03/10 Javascript
javascript自定义滚动条实现代码
2020/04/20 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
RequireJS简易绘图程序开发
2016/10/28 Javascript
jQuery使用Layer弹出层插件闪退问题
2016/12/22 Javascript
35个最好用的Vue开源库(史上最全)
2019/01/03 Javascript
vue如何截取字符串
2019/05/06 Javascript
js+springMVC 提交数组数据到后台的实例
2019/09/21 Javascript
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
Django自定义认证方式用法示例
2017/06/23 Python
Python函数返回不定数量的值方法
2019/01/22 Python
Python常用的json标准库
2019/02/19 Python
django认证系统 Authentication使用详解
2019/07/22 Python
python定时任务 sched模块用法实例
2019/11/04 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
2020/01/03 Python
Django Channel实时推送与聊天的示例代码
2020/04/30 Python
HTML+CSS+JavaScript实现图片3D展览的示例代码
2020/10/12 HTML / CSS
佳能英国官方网站:Canon UK
2017/08/08 全球购物
意大利在线药房:Farmacia Loreto Gallo
2019/08/09 全球购物
求职简历自荐信范文
2013/10/21 职场文书
普通大学毕业生自荐信
2013/11/04 职场文书
2014年师德师风自我剖析材料
2014/09/27 职场文书
市场营销计划书
2019/04/24 职场文书
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL