查询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 相关文章推荐
jQuery选择器的工作原理和优化分析
Jul 25 Javascript
JS localStorage实现本地缓存的方法
Jun 22 Javascript
jquery选择器-根据多个属性选择示例代码
Oct 21 Javascript
JS判断变量是否为空判断是否null
Jul 25 Javascript
jQuery判断checkbox选中状态
May 12 Javascript
vue制作加载更多功能的正确打开方式
Oct 12 Javascript
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
Mar 21 jQuery
bootstrap的工具提示实例代码
May 17 Javascript
JavaScript动态加载重复绑定问题
Apr 01 Javascript
vue 循环加载数据并获取第一条记录的方法
Sep 26 Javascript
详解JavaScript中typeof与instanceof用法
Oct 24 Javascript
vue全屏事件开发详解
Jun 17 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 Zip压缩 在线对文件进行压缩的函数
2010/05/26 PHP
php提示undefined index的几种解决方法
2012/05/21 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
TP5框架简单登录功能实现方法示例
2019/10/31 PHP
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
2013/04/02 Javascript
js中substring和substr的详细介绍与用法
2013/08/29 Javascript
深入理解javascript中defer的作用
2013/12/11 Javascript
JQuery实现绚丽的横向下拉菜单
2013/12/19 Javascript
js实现改进的仿蓝色论坛导航菜单效果代码
2015/09/06 Javascript
浅析四种常见的Javascript声明循环变量的书写方式
2015/10/14 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
jQuery中的each()详细介绍(推荐)
2016/05/25 Javascript
适用于手机端的jQuery图片滑块动画
2016/12/09 Javascript
JavaScript 跨域之POST实现方法
2018/05/07 Javascript
在vue中使用公共过滤器filter的方法
2018/06/26 Javascript
Vue2.x通用编辑组件的封装及应用详解
2019/05/28 Javascript
vue elementui tree 任意级别拖拽功能代码
2020/08/31 Javascript
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
PyQt 线程类 QThread使用详解
2017/07/16 Python
pandas pivot_table() 按日期分多列数据的方法
2018/11/16 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
Python3实现汉语转换为汉语拼音
2019/07/08 Python
在linux系统下安装python librtmp包的实现方法
2019/07/22 Python
Python 如何测试文件是否存在
2020/07/31 Python
python3中calendar返回某一时间点实例讲解
2020/11/18 Python
枚举和一组预处理的#define有什么不同
2016/09/21 面试题
生日派对邀请函
2014/01/13 职场文书
求职信需要的五点内容
2014/02/01 职场文书
《最可爱的人》教学反思
2014/02/14 职场文书
公务员爱岗敬业演讲稿
2014/08/26 职场文书
小班下学期幼儿评语
2014/12/30 职场文书
一年级语文下册复习计划
2015/01/17 职场文书
家庭暴力离婚起诉书
2015/05/18 职场文书
教师学习中国梦心得体会
2016/01/05 职场文书
nginx proxy_cache 缓存配置详解
2021/03/31 Servers