2016-08-16 45 views
0

我在尋找關於此主題的在線建議時遇到了一些麻煩,但我不得不在API設計中多次作出選擇。數據模式風格,如果對象的'名稱'是關鍵字或屬性

應該在映射或數組中顯示一組數據(每個節點的'名稱'作爲屬性)?

映射:

{ "data_name": {"data_value": 10, "unit": "bytes"} } 

陣列:

​​

的映射方法當然使數據創建和讀取的代碼更簡單,線更少。然而,數組方法創建了一個很好的封裝類型,適合作爲單個變量提供給構造函數或函數,而不是(name,data_type)變量對。數組方法似乎更接近數據庫風格,其中「名稱」可能是某個命名字段。

當然,數組方法可以平凡地轉換成映射;從映射

mapping = dict((v['name'],v) for v in array) 

轉換爲一個陣列需要改變的數據類型(通過引入新的屬性,「姓名」)。數組 - >映射轉換還允許選擇密鑰的用戶,例如UUID,散列或任何參數。

在谷歌的風格指南並沒有權衡黯然:http://google.github.io/styleguide/jsoncstyleguide.xml

事情似乎贊成陣列的方法,但它往往需要更多的代碼,有時顯得不自然在第一。

回答

0

這是我在幾天討論後的答案嘗試。

簡而言之,總是選擇數組格式。以下是選擇映射的情況:

  1. 您正在竊聽或寫入一個。 - 節省一行代碼是值得的
  2. 有一個非常明顯的關鍵選擇,它不需要作爲數據的屬性。

數組的好處是數據點作爲一個單元存在,沒有一對鍵和數據。