JSON数组结构

时间:2013-05-01 10:19:30

标签: arrays json

这是一个从XML字符串中采用的有效JSON数组,但我不确定它是否是最佳结构。它表示具有层次结构的员工计划 schedule-> employees-> employee> tasks-> task任务应该是员工下面的层次结构吗?我在正确的位置使用[]方括号吗?

{
    "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"                            
                        }
                    }
                ]
            }
        ]
    }
}

要求:

  • schedule-> employees(1:N)
  • 员工 - >员工(1:N) - 不确定我是否需要此
  • 员工 - >任务(1:N)
  • 任务 - >任务(1:N) - 不确定我是否需要这个
  • 任务 - >网站(1:1)

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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”很重要。