2013-10-27 26 views
20

我希望編寫一個提供JSON對象列表的web服務。它是有效的JSON返回如下:列表/數組是否有效的JSON?

[ 
    {"keyA1":"valA", "keyB1":"valB"} 
,{"keyA2":"valA", "keyB2":"valB"} 
,{"keyA3":"valA", "keyB3":"valB"} 
] 

或者是「正確」的方式做到這一點把它放在一個單一的對象返回:

{"elements":[ 
    {"keyA1":"valA", "keyB1":"valB"} 
    ,{"keyA2":"valA", "keyB2":"valB"} 
    ,{"keyA3":"valA", "keyB3":"valB"} 
]} 
+2

兩者都有效。如果你有疑問,你可以在[jsonlint.org](http://jsonlint.org/) – 2013-10-27 20:48:08

+0

http://jsonlint.com/說「有效的json」來檢查你的JSON。 – meagar

回答

30

兩種表格都有效。但是,對於API,我會推薦第二種形式。原因是它爲您提供了擴展API的途徑。例如,如果您有一個API getUsersInGroup,它返回一個用戶對象數組,並且稍後您決定要包含有關要返回的用戶的一些彙總統計信息,則沒有簡單的方法可以在不中斷的情況下執行此操作現有的客戶端(或在每個用戶對象中包含大量冗餘數據)。如果您使用對象,則只需將另一個字段添加到客戶端在以前版本的API中默默忽略的對象。

簡而言之,儘量避免在您的API中儘可能使用頂級原語,並且您會發現將來可以更輕鬆地進行擴展。

3

可以使用http://jsonlint.com/

驗證JSON

兩者都是有效的JSON結果,但我會使用第二個。這是更合乎邏輯和描述性的。

3

兩者都是有效的JSON,但第二種方法是正確的;將JSON作爲數組傳遞可能會導致安全漏洞。查看關於JSON安全性的related post以瞭解關於此的更多信息。在一些框架(如瓶子)中,甚至有一些措施可以阻止您將JSON作爲數組傳遞。