2

我想在树中插入固定长度的数值,并在稍后检查它们的存在。大多数数值都是相似的,因此将它们放在 a 中没有意义,SET因为我会浪费空间。

由于 ReJsonPATH期望键名具有“类似 Java”的命名约定,这就是我想出的:

{
  "_0": {
    "_1": {
      "_2": true
    }
  },
  "_2": {
    "_3": {
      "_4": true
    }
  }
}

因此,当我需要知道是否设置了“012”时,我需要检查是否"JSON.GET key ._0._1._2" == true.

最初,我尝试保存自然树值,例如:

{
  "0": {
    "1": {
      "2": true
    }
  },
  "2": {
    "3": {
      "4": true
    }
  }
}

但是我不能写任何PATH能够遍历这棵树的东西,无论是点还是括号形式。

有什么建议么?我应该坚持我强调的价值观和._a._b._c模式还是有更好的方法?

4

1 回答 1

4

ReJSON 使用类似于 JSONPath(但不完全是)的路径。具体来说,文档声明“名称必须以字母、美元 ($) 或下划线 (_) 字符开头”。这意味着不支持您的第二棵树。

虽然 ReJSON 可用于存储树状结构,但您的用例似乎不会从使用它中受益。相反,我会考虑展平树并将其存储为哈希(甚至是集合),其中每个字段代表一个路径,例如:

HSET tree 0.1.2 1 2.3.4 1

然后你可以使用类似的东西HEXISTS来检查“真实性”。

于 2018-10-26T13:44:29.650 回答