我正在爲預訂應用程序設計一個RESTful API。您可以申請住宿列表。這就是我不知道如何設計JSON代表的地方。這是我的XML表示:RESTful API:如何建模JSON表示?
<?xml version="1.0" encoding="utf-8"?>
<accommodations>
<accommodation>
<name>...</name>
<category>couch</category>
</accommodation>
<accommodation>
<name>...</name>
<category>room</category>
</accommodation>
<accommodations>
我第一次嘗試將其轉換爲JSON導致此輸出(1):
{
"0": {
"name": "...",
"category": "couch"
},
"1": {
"name": "...",
"category": "room"
}
}
但是當我看着別人的API是如何做到的,我發現了一些期待更多類似這樣(2):
[
{
"name": "...",
"category": "couch"
},
{
"name": "...",
"category": "room"
}
]
我知道版本1是一個對象,版本2是一個數組。
但是在這種情況下哪個更好?
謝謝,我已經在其他API中看過幾次了。但是這不是兩回事嗎?我要求「住宿」(順便說一下:真的2米),並獲得一個列表 - 住宿當然。爲什麼重複這個?還是有技術上的原因? – janpio 2010-04-29 18:58:41
如果稍後需要向其添加字段,則返回一個對象而不是數組會使其更容易。 例如說你想通過查詢參數的住宿篩選從某酒店,如: GET /住宿所有者=希爾頓 你可能要包括所有人這樣的地址: { 「的住宿」: /*的住宿在這裏*/ ], 「主人」: 「希爾頓」, 「地址」: 「黨街123」, } 因爲你已經是返回一個對象,現有的客戶不要」噸休息。我正在返回一個數組,現有的客戶端需要進行調整。 – dafmetal 2010-04-29 19:19:08
好的,用這種風格工作的一天清楚地表明,嵌套列表也更容易。例如,當您開始爲住宿設置一個屬性列表時,您必須切換到該方法,爲什麼不在主列表中使用它。 這種方式更統一。 – janpio 2010-04-30 14:25:49