列表/数组是否有效JSON?

时间:2013-10-27 20:45:53

标签: javascript json

我希望编写一个提供JSON对象列表的Web服务。返回以下内容是否有效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"}
]}

3 个答案:

答案 0 :(得分:39)

两种表格都有效。但是,对于API,我建议使用第二种形式。原因是它为您提供了扩展API的途径。

例如,如果您有一个返回用户对象数组的API getUsersInGroup,以后您决定要包含一些关于返回用户的聚合统计信息,那么就没有简单的方法可做不破坏现有客户端(或在每个用户对象中包含大量冗余数据)。如果您使用对象,则只需向该对象添加另一个字段,该字段在以前版本的API上被客户端静默忽略。

简而言之,尽量避免在API中尽可能避免使用顶级基元,并且您将来会发现它更容易扩展。

答案 1 :(得分:6)

两者都是有效的JSON,但第二种方式是正确的;作为一个数组传递JSON可能会导致安全漏洞。请参阅有关JSON安全性的related post以了解有关此内容的更多信息。在某些框架中,例如flask,甚至有一些措施阻止您将JSON作为数组传递。

答案 2 :(得分:5)

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

来验证JSON

两者都是有效的JSON结果,但我会使用第二个。它更具逻辑性和描述性。