文档章节

查询json数据结构的8种方式

小骏骏
 小骏骏
发布于 2015/04/07 11:11
字数 778
阅读 440
收藏 16

查询json数据结构的8种方式

2012/12/14 | 分类: IT技术WEB前端开发 | 0 条评论 | 来源: 伯乐在线     | 标签: JAVASCRIPT,JSON

分享到: 10

你有没有对“在复杂的JSON数据结构中查找匹配内容”而烦恼。这里有8种不同的方式可以做到:

JsonSQL

JsonSQL实现了使用SQL select语句在json数据结构中查询的功能。

例子:

1
jsonsql.query("select * from json.channel.items order by title desc",json);

主页:http://www.trentrichardson.com/jsonsql/

JSONPath

JSONPath就像是针对JSON数据结构的XPath。

例子:

1
jsonPath( books,'$..book[(@.length-1)]')

主页:http://goessner.net/articles/JsonPath/

jfunk

jFunk允许你检索(很快会加入管理功能)复杂的JSON或Javascript对象。jFunk API的设计几乎与jQuery API类似。它直接复制了jQuery的API,除了那些针对DOM的API。

例子:

1
Jf("> vegetables > *[color=Orange]",Food).get();

主页:http://code.google.com/p/jfunk/

TaffyDB

你过去有没有注意到Javascript对象的字面值看起来很像记录?如果你把他们包裹在一个数组里面,那么它们看起来有没有像一个数据库表?TaffyDB是一个Javascript库,它提供了强大的数据库功能以实现之前的想法,大大改善了你在Javascript中使用数据的方式。

1
varkelly = friends({id:2}).first();

主页:http://www.taffydb.com/

linq.js

linq.js——Javascript中的LINQ(译者注:.Net中的概念,见http://msdn.microsoft.com/zh-tw/library/bb397897

1
2
3
4
5
varqueryResult2 = Enumerable.From(jsonArray)
    .Where("$.user.id < 200")
    .OrderBy("$.user.screen_name")
    .Select("$.user.screen_name + ':' + $.text")
    .ToArray();

主页:http://linqjs.codeplex.com/

主页:http://neue.cc/reference.htm

objeq

objeq是一个简单的库,实现了对POJSO(Plain-Old JavaScript Objects,普通的Javascript对象)的实时查询。

1
2
varres = $objeq(data,"age > 40 && gender == 'female' -> name");
    // --> Returns ['Jessica']

主页:https://github.com/agilosoftware/objeq

(译注:它使用了Javascript的property setters,所以它只能工作在较新的浏览器上)

json:select()

使用类CSS选择符来查询JSON。

1
.lang:val("Bulgarian") ~ .level

主页:http://jsonselect.org/#tryit

Paul的编程珠玑中的Javascript数组过滤方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
vara = [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");

主页:http://www.paulfree.com/28/javascript-array-filtering/#more-28

目前这是我最喜欢的查询JSON数据结构的方法。它非常的简单,并且据作者所说它非常快。

它背后的理念和John Resig的JavaScript Micro-Templating类似:使用正确表达式将一段非常简单的字符串转换成Javascript函数。

当然,还有更多强大的解决方案。Paul实现的原型还缺少对过滤表达式的语法检查,但是我相信你应该可以自己解决Javscript的语法检查。

最后,你必须决定哪个对于你的项目来说最好。

本文转载自:http://blog.jobbole.com/31166/

共有 人打赏支持
小骏骏
粉丝 8
博文 111
码字总数 22428
作品 0
厦门
高级程序员
私信 提问
查询json数据结构的8种方式

你有没有对“在复杂的JSON数据结构中查找匹配内容”而烦恼。这里有8种不同的方式可以做到: JsonSQL JsonSQL实现了使用SQL select语句在json数据结构中查询的功能。 例子: jsonsql.query("s...

KelvinQ
2014/01/13
0
0
【原创】modb 功能设计之“支持对sql语句的相关日志记录”

在《 modb 开发之需求和总体设计 》中,第三个要实现的功能点就是 “ 支持对 sql 语句的相关日志记录”。下面就讲解下设计这个功能的。 【需求分析】 终于到了处理 sql 日志的阶段了,万里长...

摩云飞
2013/12/31
0
0
SQL Server 2016 JSON原生支持实例说明

原文出处:DB乐之者 背景 Microsoft SQL Server 对于数据平台的开发者来说越来越友好。比如已经原生支持XML很多年了,在这个趋势下,如今也能在SQLServer2016中使用内置的JSON。尤其对于一些...

DB乐之者
2016/09/03
0
0
手机话费充值api接口 话费充值功能接入

最近正在做一个小项目,其中一个要实现手机话费充值功能。我在网上搜罗了很久,最终找了聚合数据上的那个手机话费充值API,下面就分享一下,希望对需求的朋友有所帮助。 聚合数据是一个API聚...

夜晚晚
2016/11/28
895
2
Ztree + PHP 无限级节点 递归查找节点法

一、前言 简单的描述一下,实习几个原理,思想,其实写很多东西,思想算是最重要的。 1、目标:将写一个无限节点的树形目录结构,如下图 步骤: 1、你的下载 插件 ztree。然后布置在你的项目...

RablePHP
2014/11/14
0
7

没有更多内容

加载失败,请刷新页面

加载更多

ConcurrentHashMap源码解析

初始化 先看看ConcurrentHashMap中几个重要的属性: // 初始化容量大小static final int DEFAULT_INITIAL_CAPACITY = 16;//默认负载因子static final float DEFAULT_LOAD_FACTOR = 0.75f...

grace_233
19分钟前
0
0
java对象的浅拷贝和深拷贝

浅拷贝 java的数据类型有基本数据类型(如:int、long等)和引用数据类型。例如:对象1中有属性a(基本数据类型)和属性b(引用数据类型),在进行浅拷贝到对象2时,属性a复制属性的值给对象...

yangyangyyyy
20分钟前
0
0
SQLServer AlwaysOn在阿里云的前世今生

缘起 早在2015年的时候,随着阿里云业务突飞猛进的发展,SQLServer业务也积累了大批忠实客户,其中一些体量较大的客户在类似大促的业务高峰时RDS的单机规格(规格是按照 内存CPUIOPS 一定比例...

阿里云云栖社区
21分钟前
0
0
ubuntu16.04 LNMP搭建 php7.1

sudo apt-get update sudo apt-get install mysql-server mysql-client sudo apt-add-repository ppa:ondrej/php sudo apt-get update sudo apt-get install php7.1 php7.1-fpm php7.1-cgi p......

一千零一夜个为什么
27分钟前
0
0
阿里云高级技术专家带你全面了解云主机性能评测

钱超,花名西邪,阿里云高级技术专家,超12年老阿里,是云主机性能领域的知名专家。 在目前的云计算测评领域,很多性能测评存在营销的包装,容易引起误导:比如用瞬时性能引导读者得出结论,...

阿里云官方博客
34分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部