查询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与Div对层定位和移动获得坐标的实现代码
Sep 08 Javascript
js简单抽奖代码
Jan 16 Javascript
js实现拉幕效果的广告代码
Sep 02 Javascript
JavaScript代码判断点击第几个按钮
Dec 13 Javascript
JS百度地图搜索悬浮窗功能
Jan 12 Javascript
利用node.js搭建简单web服务器的方法教程
Feb 20 Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
Sep 14 Javascript
JS实现在文本指定位置插入内容的简单示例
Dec 22 Javascript
微信小程序仿微信运动步数排行(交互)
Jul 13 Javascript
搭建一个Koa后端项目脚手架的方法步骤
May 30 Javascript
vue webpack重写cookie路径的方法
Jul 10 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
Nov 02 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中通过ADODB库实现调用Access数据库之修正版本
2006/12/31 PHP
php学习 字符串课件
2008/06/15 PHP
php 文章采集正则代码
2009/12/28 PHP
应用开发中涉及到的css和php笔记分享
2011/08/02 PHP
二进制交叉权限微型php类分享
2014/02/07 PHP
php封装的page分页类完整实例
2016/10/18 PHP
thinkPHP简单调用函数与类库的方法
2017/03/15 PHP
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
2013/05/08 Javascript
JS 两个字符串时间的天数差计算
2013/08/25 Javascript
JsRender实用入门教程
2014/10/31 Javascript
复杂的javascript窗口分帧解析
2016/02/19 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
js仿QQ邮箱收件人选择与搜索功能
2017/02/10 Javascript
用file标签实现多图文件上传预览
2017/02/14 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
jQuery查找dom的几种方法效率详解
2017/05/17 jQuery
详解vue2.0 transition 多个元素嵌套使用过渡
2017/06/19 Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
2017/08/26 Javascript
Vue使用vue-cli创建项目
2017/09/01 Javascript
vue将毫秒数转化为正常日期格式的实例
2018/09/16 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
python实现将excel文件转化成CSV格式
2018/03/22 Python
python针对不定分隔符切割提取字符串的方法
2018/10/26 Python
python爬虫爬取笔趣网小说网站过程图解
2019/11/18 Python
python中的django是做什么的
2020/07/31 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
学校卫生检查制度
2014/02/03 职场文书
班长自荐书范文
2014/02/11 职场文书
出生公证书
2015/01/23 职场文书
节水宣传标语口号
2015/12/26 职场文书
Java生成日期时间存入Mysql数据库的实现方法
2022/03/03 Java/Android
Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程
2022/04/08 数码科技