0

这是一个从 XML 字符串中采用的有效 JSON 数组,但我不确定它的结构是否优化。它表示具有 schedule->employees->employee>tasks->task 层次结构的员工日程安排,tasks 应该是低于员工的层次结构吗?我在正确的地方使用 [] 方括号吗?

{
    "schedule": {
        "employees": [
            {
                "employee": "1000",
                "tasks": [
                    {             
                        "task1": {
                            "site":"McDo",
                            "from":"0900",
                            "to":"1000"

                        }
                    },
                    {                     
                        "task2": {
                            "site":"McDo",
                            "from":"0900",
                            "to":"1000"                            
                        }
                    }
                ]
            },
            {
                "employee": "2000",
                "tasks": [
                    {             
                        "task3": {
                            "site":"HJ",
                            "from":"0900",
                            "to":"1000"

                        }
                    },
                    {                     
                        "task4": {
                            "site":"KFC",
                            "from":"0900",
                            "to":"1000"                            
                        }
                    }
                ]
            }
        ]
    }
}

要求:

  • 日程安排-> 员工 (1:N)
  • employees->employees (1:N) - 不确定我是否需要这个
  • 员工->任务 (1:N)
  • 任务-> 任务 (1:N) - 不确定我是否需要这个
  • 任务->站点 (1:1)
4

2 回答 2

1

这真的取决于你的要求。考虑一下:单个员工是否有更多任务,而不是多个员工共享任务?在这种情况下,你是对的。

否则,请与我们分享您的需求/用例。

于 2013-05-01T10:22:41.993 回答
0

如果通过“优化结构”,您的意思是最小化 JSON 的大小,那么这取决于子项的顺序是否重要,以及您是否打算在每个对象中包含任何其他项类型。

假设顺序不重要,并且时间表只能包含员工,而员工只能包含任务,则可以排除大部分 JSON。

例如,对象类型可以从它们在结构中的相对深度推断出来,并且可以删除列表以给出...

{
    "1000":
    {
        "task1":
        {
            "site":"McDo",
            "from":"0900",
            "to":"1000"
        },
        {                     
        "task2":
        {
            "site":"McDo",
            "from":"0900",
            "to":"1000"                            
        }
    },
    "2000":
    {             
        "task1":
        {
            "site":"HJ",
            "from":"0900",
            "to":"1000"
        },
        "task2":
        {
            "site":"KFC",
            "from":"0900",
            "to":"1000"                            
        }
    }
}

...可以从中重建所有原始数据。

我假设任务名称,例如“task1”很重要。

于 2013-05-01T11:01:05.690 回答