2013-05-01 117 views
0

這是一個從XML字符串中採用的有效JSON數組,但我不確定它是否是最佳結構。它表示層次爲 時間表 - >員工 - >員工>任務 - >任務的員工時間表是否應該是員工以下的層次結構?我在正確的地方使用[]方括號嗎?JSON數組結構

{ 
    "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->員工(1:N) - 不知道我需要這個
  • 員工 - >任務(1:N)
  • 任務 - >任務(1:N) - 不知道我需要這個
  • 任務 - >網站(1:1)
+0

對我很好。 – alexn 2013-05-01 10:21:00

回答

1

這真的取決於您的要求。考慮一下:單個員工是否有更多的任務,沒有任務在多個員工之間共享?在這種情況下,你是對的。

否則,請與我們分享您的需求/用例。

+0

我添加了需求。員工可能有多個任務,但任務對他/她來說是唯一的。 – Abe 2013-05-01 10:28:36

+0

好吧,它似乎適合。你可以(正如Aya所建議的)考慮刪除層「僱員」和「任務」。如果它仍然適合您的情況,我會推薦。在這種情況下降低複雜性是件好事。 – Aquillo 2013-05-01 11:12:52

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」是重要的。