文档章节

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

KelvinQ
 KelvinQ
发布于 2014/01/13 00:29
字数 656
阅读 158
收藏 9

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

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

JsonSQL

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

例子:

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

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

JSONPath

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

例子:

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

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

jfunk

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

例子:

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

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

TaffyDB

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

var kelly = friends({id:2}).first();

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

linq.js

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

var queryResult2 = 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对象)的实时查询。

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

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

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

json:select()

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

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

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

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

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" );

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

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

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

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

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


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

KelvinQ

KelvinQ

粉丝 8
博文 187
码字总数 16042
作品 2
苏州
程序员
私信 提问
PostgreSQL JSONB 使用入门

json 类型 说明 根据RFC 7159中的说明,JSON 数据类型是用来存储 JSON(JavaScript Object Notation)数据的。这种数据也可以被存储为,但是 JSON 数据类型的优势在于能强制要求每个被存储的...

goodspeed
05/30
0
0
【原创】modb 功能设计之“支持对sql语句的相关日志记录”

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

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

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

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

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

夜晚晚
2016/11/28
1K
2
多属性、多分类MySQL模式设计

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/n88Lpo/article/details/100069762 +--------------------+---------...

老叶茶馆_
08/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

在每个GROUP BY组中选择第一行?

顾名思义,我想选择以GROUP BY分组的每组行的第一行。 具体来说,如果我有一个如下的purchases表: SELECT * FROM purchases; 我的输出: id | customer | total---+----------+------ 1...

技术盛宴
35分钟前
5
0
python 安装与使用总结

https://www.jetbrains.com/pycharm/download/#section=mac

T型人才追梦者
39分钟前
5
0
每个开发人员都应该知道的11个Linux命令

本文主要挑选出读者有必要首先学习的 11 个 Linux 命令,如果不熟悉的读者可以在虚拟机或云服务器上实操下,对于开发人员来说,能熟练掌握 Linux 做一些基本的操作是必要的! 事不宜迟,这里...

武培轩
48分钟前
7
0
window.onload与$(document).ready()

JavaScript的window.onload和jQuery的$(document).ready()方法有什么区别? #1楼 关于在Internet Explorer中使用$(document).ready()的警告。 如果在整个文档加载之前 HTTP请求被中断(例如,...

javail
51分钟前
8
0
对比yml配置文件与properties的区别

我们在日常编码中少不了配置文件,说到配置文件就不得不说起yml和properties这两种后缀的配置文件 接下来我带大家简述一下他们具体有什么区别 - yml格式的文件 server: port: 9090 spring: a...

理性思考
54分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部