Использование ReJson для хранения числового дерева - PullRequest
0 голосов
/ 25 октября 2018

Я хотел бы вставить числовые значения фиксированной длины в дерево и проверить их наличие на более позднем этапе.Большинство числовых значений схожи, поэтому не имеет смысла помещать их в SET, так как я буду тратить пространство.

Так как ReJson PATH ожидает "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 или есть лучший способ?

1 Ответ

0 голосов
/ 26 октября 2018

ReJSON использует пути, похожие на JSONPath (но не совсем).В частности, docs гласит, что "Имена должны начинаться с буквы, доллара ($) или символа подчеркивания (_)" .Это означает, что ваше второе дерево не поддерживается.

Хотя ReJSON можно использовать для хранения древовидной структуры, похоже, что ваш вариант использования не принесет пользы от его использования.Вместо этого я бы посмотрел на выравнивание дерева и его сохранение в виде хэша (или даже набора), где каждое поле представляет путь, например:

HSET tree 0.1.2 1 2.3.4 1

Тогда вы можете использовать что-то вроде HEXISTSпроверить на «правдивость».

...