列表/数组是否有效JSON?

lon*_*oat 30 javascript json

我希望编写一个提供JSON对象列表的Web服务.返回以下内容是有效的JSON:

[
  {"keyA1":"valA", "keyB1":"valB"}
 ,{"keyA2":"valA", "keyB2":"valB"}
 ,{"keyA3":"valA", "keyB3":"valB"}
]
Run Code Online (Sandbox Code Playgroud)

或者是"正确"的方式将它放在一个单独的对象中返回:

{"elements":[
   {"keyA1":"valA", "keyB1":"valB"}
  ,{"keyA2":"valA", "keyB2":"valB"}
  ,{"keyA3":"valA", "keyB3":"valB"}
]}
Run Code Online (Sandbox Code Playgroud)

Chr*_*yes 45

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

例如,如果您有一个getUsersInGroup返回用户对象数组的API ,并且稍后您决定要包含一些关于返回用户的聚合统计信息,那么在不破坏现有客户端的情况下(或包括每个用户对象中有大量冗余数据).如果您使用对象,则只需向该对象添加另一个字段,该字段在先前版本的API上被客户端静默忽略.

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


JDo*_*ong 6

两者都是有效的JSON,但第二种方式是正确的; 作为一个数组传递JSON可能会导致安全漏洞.有关此问题的详细信息,请参阅有关 JSON安全性的相关帖子.在某些框架中,例如flask,甚至有一些措施可以阻止您将JSON作为数组传递.


小智 5

您可以使用http://jsonlint.com/验证JSON

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