【问题标题】:json describing a booleanjson 描述一个布尔值
【发布时间】:2012-07-31 17:46:31
【问题描述】:

我在服务器端对象模型中有一个布尔字段。我正在编写一个自定义 json 转换器,我想知道如何最好地为 json 编码。我应该将其保留为布尔值还是应该将 true 转换为 1 和 false 转换为 0。

最好的方法是什么?

谢谢。

【问题讨论】:

  • 为什么要编写自定义 JSON 转换器?
  • 因为某些属性对客户端不可见。
  • 我不明白您为什么要将布尔值描述为布尔值以外的任何东西,除非您使用的语言不支持该类型。
  • 为了节省json字符串的空间;显然这不是一个好主意。
  • 好吧,但这与如何表示布尔值无关。这是为了节省空间。如果你想节省空间,那么这是你需要决定的。您还需要考虑它是否对目标语言有意义。

标签: c# javascript json


【解决方案1】:

根据RFC(§2.1),布尔值是true 或false。

【讨论】:

    【解决方案2】:

    我更喜欢在我的 JSON 中使用 true/false 关键字,但 1/0 仍然可以使用。你的问题是关于如何编写代码来创建这个 JSON 对象?这取决于您如何实现转换器。到目前为止你有什么?

    【讨论】:

      【解决方案3】:

      没有明确的最佳方法。这取决于你(谁使用它)。

      我个人认为,如果您代表布尔值,请使用 True / False ,而不是 1 /0。这更具可读性(对于将要维护此代码的未来开发人员/当您在几个月后查看此代码时)。

      【讨论】:

      • 此外,使用True/False 可能会使您的代码在未来更加健壮。无论您现在使用哪种语言来解释 JSON(可能是 JavaScript),都会将 1 视为真,将 0 视为假,但如果您稍后将此 JSON 作为 API 的一部分公开怎么办?有人可能会联系您的服务,解析 JSON 并为 0 创建一个 Int/Number/Whatever 强类型的真实对象,然后必须以不合逻辑的方式解决此限制。即使没有计划这样做,尽可能减少你想要的和你的意思之间的语义差距通常是有益的。
      【解决方案4】:

      我建议使用true 和false,因为它更清楚地表明这些值是布尔值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-17
        • 1970-01-01
        • 2019-04-26
        • 1970-01-01
        • 1970-01-01
        • 2016-10-22
        • 1970-01-01
        相关资源
        最近更新 更多