9

我目前正在处理一个项目,我正在处理大量的 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.StoreExt.data.Record对象来执行这种数据操作的经验,但我认为它们对于初级开发人员来说过于复杂,我正在从事的项目是一个小型移动应用程序,其中我们不能仅仅为了它而添加一个 300K+ 的库,所以我需要一些非常小的东西。

如果有一个 Javascript JSON 操作框架具有以下任何想法:

  1. 可以储存
  2. 检索,
  3. 排序
  4. 遍历JSON 数据,
  5. 使用干净的 API
  6. 最小的性能拖累(手机没有很多计算能力)
  7. 以及理想情况下小于 10K 的小型有效载荷?

我可能要求太多,但希望有人使用过这样的东西......我正在寻找的那种东西是jQuery 的 JSON 等价物,也许它并不那么古怪。

4

3 回答 3

12

看看jsonQ

它满足了问题中指出的所有要求。

  • 可以储存,
  • 取回
  • 并遍历 JSON 数据,

提供遍历(如查找、兄弟、父等)和操作方法如(值、附加、前置);

  • 种类

提供在 jsonQ 对象上运行的直接数组排序方法和排序方法。(两种排序方法都递归运行)

  • 使用干净的 API

尝试使用与 jQuery DOM API 相同的 JSON API。因此,如果您熟悉 jquery。它很容易赶上。提供了更多完整的 api文档

  • 最小的性能阻力

它在初始化 jsonQ 时为 JSON 数据创建了一种新格式,该格式在内部用于遍历更有效的数据。(这就像一次拥有所有循环,因此您不必在每次该 json 时进行循环迭代)。

  • 以及理想情况下小于 10K 的小型有效载荷?

缩小版为 11.7 kb。

于 2013-11-17T06:47:22.890 回答
0

其实你的问题不好,我想。从您的示例中可以看出,您正在尝试使用 JSON 模拟类似 SQL 的存储。也许,您只需要使用IndexedDB吗?

jsonpath匹配您的确切要求的第 4-7 点(可能还有第 3 点),并且JSON全局对象允许 1 和 2 只调用一次。

恕我直言,要求也是不真实的,尤其是最后一个关于尺寸的要求。

于 2012-03-16T10:00:22.153 回答
0

我认为Lawnchair是您正在寻找的东西。它的主页说它是为移动设备制作的,但是我以前没有使用过它,所以我无法对此发表评论。

它是简单的键值存储,尽管您可以定义自己的索引,就像使用 CouchDB 一样。我还没有看到对选择器的支持,但是有一个查询插件可用,可以轻松选择。

像 jQuery 这样的东西依赖于 sizzle,它是 CSS 选择器库,不适用于您的情况。XPath 在我看来是您最好的选择,因为它主要与 XML(一种树结构)一起使用。由于 JSON 对象可以表示为一棵树,因此我找到了JSONSelect,这是一个以“CSS-ish”方式支持 JSON Xpath 选择器的小型库。

如果您能够以某种方式将 JSONSelect 插入 Lawnchair,我认为您已经找到了一个很好的组合 :)

于 2012-03-16T14:27:50.377 回答