【问题标题】:Is a list/array valid JSON? [duplicate]列表/数组是有效的 JSON 吗? [复制]
【发布时间】:2013-10-27 20:45:52
【问题描述】:

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

[
  {"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"}
]}

【问题讨论】:

标签: javascript json


【解决方案1】:

两种形式都有效。但是,对于 API,我会推荐第二种形式。原因是它为您提供了扩展 API 的途径。

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

简而言之,在您的 API 中尽可能避免使用顶级原语,您会发现将来扩展它更容易。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-30
        • 1970-01-01
        • 1970-01-01
        • 2012-10-14
        • 1970-01-01
        • 1970-01-01
        • 2016-08-17
        相关资源
        最近更新 更多