我正在开发一个项目,我正在处理相当数量的JSON数据,这些数据被向后和向前传输并由浏览器存储为javascript对象列表。例如:
person: {
// Primary Key
key: "id",
// The actual records
table: {
"1": {id: 1, name: "John", surname: "Smith", age: 26},
"2": {id: 2, name: "Mary", surname: "Brown", age: 19},
// etc..
},
indexes: {
// Arrays of pointers to records defined above
"name": [
{id: 89, name: "Aaron", surname: "Jones", age: 42},
// etc..
]
}
我发现自己编写了各种索引和排序算法来有效地操作这些数据,我开始认为这种事情必须在以前完成。
我有使用Ext.data.Store和Ext.data.Record对象来执行此类数据操作的经验,但我认为它们对于初级开发人员而言过于复杂,我正在开发的项目很小移动应用程序,我们不能只为它添加一个300K +库,所以我需要一些非常小的东西。
如果存在具有以下内容的Javascript JSON操作框架,则有任何想法:
我可能会要求太多,但希望有人使用类似这样的东西...我正在寻找的那种东西是 JSON相当于jQuery ,也许它不那么古怪
答案 0 :(得分:10)
查看jsonQ
它满足了所有针对问题的要求。
提供遍历(如find,siblings,parent等)和操作方法,如(value,append,prepend);
提供在jsonQ对象上运行的直接数组排序方法和排序方法。 (两种排序方法递归运行)
它是一个与JQuery DOM API具有相同的JSON API的试用版。所以如果你熟悉jquery。它容易赶上。有更多完整documentation的apis可用。
它为JSON数据的jsonQ初始化创建了一种新格式,该数据在内部用于遍历更有效的数据。 (它就像同时拥有所有循环一样,所以你不必每次循环时循环遍历循环)。
缩小版本为11.7 kb。
答案 1 :(得分:0)
实际上你的问题并不好,我想。从您的示例可以看出,您正在尝试使用JSON模拟类似SQL的存储。也许,你只需要IndexedDB?
jsonpath匹配您的确切要求的第4-7点(也可能是3点),JSON全局对象允许1和2只为您调用一次。
此外,恕我直言的要求是不真实的,特别是关于大小的最后一个。
答案 2 :(得分:0)
我认为Lawnchair是您正在寻找的东西。它的主页说它是用移动设备制作的,但我以前没用过它所以我不能对此发表评论。
它是简单的键值存储,虽然您可以定义自己的索引,类似于CouchDB。我没有看到对选择器的支持,但是有一个查询插件可用,很容易选择。
像jQuery这样的东西依赖于sizzle,它是CSS选择器库,在你的情况下不适用。 XPath在我看来是最好的选择,因为它主要用于XML,一种树形结构。由于JSON对象可以表示为树,我找到了JSONSelect,这是一个以“CSS-ish”方式支持JSON Xpath选择器的小型库。
如果你能够以某种方式将JSONSelect插入Lawnchair,我认为你已经找到了一个很好的组合:)