JSON层次结构:犹豫如何实现它

时间:2018-05-02 15:48:08

标签: javascript json hierarchy

我实际上正在建立一个网站,我需要显示一个层次结构,我有限制用JSON构建后者。

因此,在实施任何内容之前,我想到了层次结构的两种可能性,我无法确定哪一种对我的项目最有效。

目的

我必须使用HTML5 BoilerPlate在网页上显示dico_tree字段中表示的整个层次结构。我将不得不用JavaScript解析这个,以获取它包含的所有数据。

约束

  • 项目可以有一个或没有父项(由null表示)。
  • 项目可以包含多个子项目。
  • 为了在我的网页上快速显示,我必须找到每种独特项目的最快方式。

我想过的可能性

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 :(得分:0)

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": [] }
},