允许对JSON数据进行类似SQL查询的Javascript库?

假设我们的JSON数据来自单个MySQL表:

someJSON = [ { name: 'bill' , sex:'M', income:50000 }, { name: 'sara' , sex:'F', income:100000 }, ... ]; 

并说伪代码是:

“获取所有sex:F的所有人物sex:F income sex:F > 60000”。

是否有任何javascript库允许用户使用SQL或类似SQL的语法对此JSON数据进行此类查询编码。

如果你很好奇,有些背景:

我正在为我的组织制作数据分析Web服务的前端,而不知道未来的后端是什么。 将来,他们会将数据从MS Access表迁移到某种类型的MySQL类型数据库。 在那之前,我使用静态JSON文件来开始开发,并且认为将来我们的javascript查询显示为MySQL查询可能对他们有所帮助。 (当前的MS Access数据库无法从Web访问。)

看看jslinq :

 var myList = [ {FirstName:"Chris",LastName:"Pearson"}, {FirstName:"Kate",LastName:"Johnson"}, {FirstName:"Josh",LastName:"Sutherland"}, {FirstName:"John",LastName:"Ronald"}, {FirstName:"Steve",LastName:"Pinkerton"} ]; var exampleArray = JSLINQ(myList) .Where(function(item){ return item.FirstName == "Chris"; }) .OrderBy(function(item) { return item.FirstName; }) .Select(function(item){ return item.FirstName; }); 

我用Taffydb。 TaffyDB是一个opensouce库,它将数据库function引入JavaScript应用程序。 http://taffydb.com/

你可以尝试alasql.js 。 它是纯JavaScript客户端SQL服务器,您可以在其中对JSON对象执行查询。

  // Fill table with data var data = [ { name: 'bill' , sex:'M', income:50000 }, { name: 'sara' , sex:'F', income:100000 }]; // Do the query console.log(alasql("SELECT * FROM ? WHERE sex='F' AND income > 60000",[data])); 

在小提琴中尝试这个

我在过去的谷歌搜索中看到了一些类似于jq库的linq。

编辑 – 这是一对夫妇
http://linqjs.codeplex.com/
http://jslinq.codeplex.com/
http://jsinq.codeplex.com/ < - 非常酷的游乐场

您可能有兴趣查看具有完全可查询性的JSON样式数据存储MongoDB。 这是它的查询语法:

 db.users.find({'last_name': 'Smith'}) 

对于您的示例问题:

 db.users.find({'sex': 'F', 'income' : {$gt : 60000}}) 

还有JsonSql似乎与您正在寻找的类似。 唯一的问题是它在2007年12月30日尚未更新。 仍然有代码可以抓住并玩。

我还喜欢http://goessner.net/articles/JsonPath/

还有这个http://code.google.com/p/jfunk/哪些用户使用jQuery样式选择器来过滤数据

根据您必须支持的浏览器/版本,我将努力使用HTML5客户端SQL ,将我的JSON数据推送到一个或多个表中,并利用真正的SQL查询的强大function。

这是规范草案: http : //www.w3.org/TR/webdatabase/

我知道问题已经过时了,但我刚刚通过谷歌搜索来到这里。 我只是在谈论objeq 。 看起来非常有前途,非常适合您寻找的东西。