查询json数据结构的8种方式
查询json数据结构的8种方式
你有没有对“在复杂的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
|
var kelly = friends({id:2}).first(); |
linq.js
linq.js——Javascript中的LINQ(译者注:.Net中的概念,见http://msdn.microsoft.com/zh-tw/library/bb397897)
|
1
2
3
4
5
|
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对象)的实时查询。
|
1
2
|
var res = $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
|
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的语法检查。
最后,你必须决定哪个对于你的项目来说最好。
查询json数据结构的8种方式的更多相关文章
- [转载]查询json数据结构的8种方式
http://wangxinghaoaccp.blog.163.com/blog/static/1158102362012111812255980/ 你有没有对“在复杂的JSON数据结构中查找匹配内容 ...
- 【代码笔记】iOS-向服务器传JSON数据的两种方式
一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...
- 彻底了解构建 JSON 字符串的三种方式
原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7701856.html 前言:JSON 是轻量级的数据交换格式,很常用,尤其是在使用 Ajax ...
- Json传递数据两种方式(json大全)
1.Json传递数据两种方式(json大全)----------------------------字符串 var list1 = ["number","name&quo ...
- spring接收json字符串的两种方式
一.前言 前几天遇到一个问题,前端H5调用我的springboot一个接口(post方式,@RequestParameter接收参数),传入的参数接收不到.自己测试接口时使用postman的form- ...
- jQuery异步获取json数据的2种方式
jQuery异步获取json数据有2种方式,一个是$.getJSON方法,一个是$.ajax方法.本篇体验使用这2种方式异步获取json数据,然后追加到页面. 在根目录下创建data.json文件: ...
- Asp.net Web API 返回Json对象的两种方式
这两种方式都是以HttpResponseMessage的形式返回, 方式一:以字符串的形式 var content = new StringContent("{\"FileName ...
- spring mvc 返回json数据的四种方式
一.返回ModelAndView,其中包含map集 /* * 返回ModelAndView类型的结果 * 检查用户名的合法性,如果用户已经存在,返回false,否则返回true(返回json数据,格式 ...
- SpringMVC返回json数据的三种方式
1.第一种方式是spring2时代的产物,也就是每个json视图controller配置一个Jsoniew. 如:<bean id="defaultJsonView" cla ...
随机推荐
- Linux进程间通信IPC学习笔记之消息队列(Posix)
基础知识: 消息队列可认为是一个消息链表,有足够写权限的线程可往队列中放置消息,有足够读权限的线程可以从队列中取走消息.在某个进程往一人队列写入消息之前,并不需要另外某个进程在该队列上等待消息的到达. ...
- Android “NetworkOnMainThreadException”出错原因及解决办法
原因: 不允许在主线程中通讯 方法1:非要在主线程中,当然也可以,这样去处理: StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Build ...
- WinForm调试输出数据
在调试Winfrom时想知道其中的数据输出 1.单击运行按钮 2.选择调试->窗口->输出 3.单击Winform中要执行的按钮 在输出栏中显示输出数据 4.Ctrl K S 能够 ...
- 云主机上搭建squid3代理服务器
目录 目录 具体流程 修改配置文件 问题 维基整理 代理服务器 Squid (软件) SOCKS SOCKS代理 参考:http://raysmond.com/node/79 具体流程 在服务器上安装 ...
- 【EF】 proxy
逐步解說:使用 WCF 序列化 POCO Proxy (Entity Framework) .NET Framework 4 POCO Proxy 型別無法由 Windows Communicat ...
- windows server 2008 r2电脑历史操作记录
1.看计算机哪天运行过. 在系统盘下的Windows\Tasks文件夹下找到文件SCHEDLGU.TXT. 2.看你最近打开过什么文件(非程序)或者文件夹 开始-->运行--> ...
- 山东省第四届ACM大学生程序设计竞赛解题报告(部分)
2013年"浪潮杯"山东省第四届ACM大学生程序设计竞赛排名:http://acm.upc.edu.cn/ranklist/ 一.第J题坑爹大水题,模拟一下就行了 J:Contes ...
- Java中怎样判断一个字符串是否是数字?
1:正则表达式 public static void main(String[] args) { String str = "123456456456456456"; boolea ...
- 超简单的卸载ORACLE 11g
本机环境 win10 64位 找到安装目录下的 F:\app\Shuai\product\11.2.0\dbhome_1 按键盘d找到deinstall文件夹进入 管理员运行deinstall.bat ...
- iOS 添加阴影后 屏幕卡顿 抖动
- (void)awakeFromNib { // Initialization code _btnViews.layer.shadowPath =[UIBezierPath bezierPathWi ...