【问题标题】:JSON Hierarchy : Hesitating on how to implement itJSON层次结构:犹豫如何实现它
【发布时间】:2018-05-02 15:48:08
【问题描述】:

我实际上正在构建一个需要显示层次结构的网站,并且我有使用 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},
  ]
} 

如果您需要一些精度,我愿意添加任何精度!

提前感谢您的时间和帮助:)。

【问题讨论】:

    标签: javascript json hierarchy


    【解决方案1】:

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

    【讨论】:

    • 不,它不是一个数组,但我认为它是一个数组会更方便,允许我使用数字索引而不必像你一样在前面添加它.我开始构建它,并选择了第二种可能性,因为在我看来,层次结构以更清晰的方式表示,并且目前它极大地通过了我的测试,即使某些子级存在空值。你觉得以后会给我带来麻烦吗?知道我在 children 属性上使用 JS 和“for_each”循环。
    • 只要你的数据结构是一致的并且你知道如何解决它,没有什么会给你带来麻烦。如果您的测试通过了,并且您可以简单快速地找到结构中的所有内容而没有任何错误,那就没问题了。
    猜你喜欢
    • 2023-03-15
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多