JSON Hierarchy: не решаясь, как его реализовать - PullRequest
0 голосов
/ 02 мая 2018

На самом деле я создаю веб-сайт, на котором мне нужно отобразить иерархию, и у меня есть ограничение для построения последней с помощью JSON.

Поэтому, прежде чем что-либо реализовывать, мне приходит в голову две возможности для иерархии, и я не могу понять, какая из них будет наиболее эффективной для моего проекта.

Цель

Мне нужно отобразить на веб-странице, используя HTML5 BoilerPlate, целую иерархию, представленную в поле dico_tree. Мне придется проанализировать этот файл с помощью JavaScript, чтобы получить все содержащиеся в нем данные.

1012 * Ограничения *

  • Элементы могут иметь одного или не иметь родителя (представлен ноль).
  • Элементы могут иметь несколько детей или не иметь их.
  • Мне нужно будет найти самый быстрый способ для каждого уникального предмета, чтобы быстро отобразить его на моей веб-странице.

Возможности, о которых я думал

Possibility 1

{
    "dico_name" : "Dictionary",
    "version" : "1",
    "dico_tree" : [
       {"ID" : 1,"parent" : null,"children" : [2]},
       {"ID" : 2, "parent" : 1, "children": [3,4]},
       {"ID" : 3, "parent" : 2, "children": null},
       {"ID" : 4, "parent" : 2, "children": null},
       {"ID" : 5,"parent" : null,"children" : [6]},
       {"ID" : 6, "parent" : 5, "children": [7]},
       {"ID" : 7, "parent" : 6, "children": null}],
    "custom_translations_list" : [
       {"TRANSLATION_ID" : 1, "CUSTOM_TRANSLATION_ID" : 12}
} 

Possibility 2

{
  "dico_name" : "Dictionary",
  "version" : "1",
  "dico_tree" : [
    {"ID" : 1,"parent" : null,"children" : [
      {
        "ID" : 2, "parent" : 1, "childen": [
        {
          "ID" : 3, "parent" : 2, "children": null
        },
        {
          "ID" : 4, "parent" : 2, "children": null
        }
        ]
      }
    ]},
    {"ID" : 5,"parent" : null,"children" : [
      {
        "ID" : 6, "parent" : 5, "childen": [
        {
          "ID" : 7, "parent" : 6, "children": null
        }
        ]
      }
    ]}
  ],
  "custom_translations_list" : [
    {"TRANSLATION_ID" : 1, "CUSTOM_TRANSLATION_ID" : 12},
  ]
} 

Я готов добавить любую точность, если вам нужно!

Спасибо за ваше время и помощь заранее:).

1 Ответ

0 голосов
/ 03 мая 2018

Должен ли disco_tree быть массив? Создание объекта позволит вам получить доступ к любому элементу в O (1). Кроме того, если элемент без дочерних элементов имеет пустой массив [] вместо null, вы можете избавить себя от некоторых раздражающих исключений нулевого указателя.

"dico_tree" : {
       1 : {"ID" : 1, "parent" : null, "children" : [2] },
       2 : {"ID" : 2, "parent" : 1, "children": [3,4] },
       3 : {"ID" : 3, "parent" : 2, "children": [] },
       4 : {"ID" : 4, "parent" : 2, "children": [] },
       5 : {"ID" : 5, "parent" : null, "children" : [6]},
       6 : {"ID" : 6, "parent" : 5, "children": [7] },
       7 : {"ID" : 7, "parent" : 6, "children": [] }
},
...