JSON值为1或0 - int或boolean

Phi*_*ord 55 json integer boolean

JSON对待这些都是一样的吗?或者他们是整数和布尔的混合?

var data =
{
    "zero" : 0,
    "one" : 1,
    "false" : 0,
    "true" : 1,
    "0" : false,
    "1" : true
}
Run Code Online (Sandbox Code Playgroud)

Rob*_*gar 87

truefalse是实际的布尔值,其余是整数.有关更多信息,请参见http://json.org/.

  • 为了帮助那些发现这篇文章寻找相同信息的人,答案是"不".JSON中的值为"true"和"false"没有引号. (16认同)
  • 链接到json.org在这里很有用.我来看这个问题,看看JSON是否使用值为true和false的引号. (3认同)

SLa*_*aks 62

JSON是一种传输数据的格式.
它没有平等的概念.

JSON 解析器将布尔值和数字视为不同的类型.

  • 通过这种方式可以更清楚地解释这个答案:*"Phil,你提到JSON,这是一种格式;你要问的是JSON解析器.事实上,JSON解析器......等等等等."*Folks谁是顶尖的解释者总是交易幽默,温和的讽刺,诙谐的反向直接,令人惊讶的开放线索,以及任何类型的风格开局,无论如何......绝对,全面,解释力.S.,我指导像你这样的年轻人参加温斯顿丘吉尔的着作 - 你会喜欢*我的早年生活*,这是一种主语言的典范.干杯 (51认同)
  • 这是一个毫无意义的答案 - 它甚至是错误的,因为实际上有一个官方的[JSON规范](http://www.json.org),它显示了与数字不同的`true`和`false`字面值.任何未能进行区分的解析器都不是JSON解析器. (23认同)
  • 如果一个人不喜欢OP和答案提供者之间的交换是双方都可以接受的事实......如绿色复选标记所示,那么请以身作则,而不是咆哮. (2认同)

Hie*_* Vo 28

我更喜欢使用0/1而不是true/false,因为0/1只消耗1个字节,而true/false消耗4/5个字节.

  • 您可能更喜欢它,但使用 0/1 并不总是有效。例如,当使用 JWT 时。 (2认同)

Sta*_*Man 11

如上所述,在JSON级别,0和false不相同; 数据类型是数字与布尔值.但是JSON处理库可以选择进行转换; 例如,特别是在没有本机布尔类型的语言/平台上.在这种情况下,可以使用另一种表示(空字符串或0表示假).

此外,处理库也可以强制类型:如果期望布尔值,则可以接受某些数字/字符串值(或JSON"空"标记).这是相当常见的,因为不同语言的数据类型选择存在差异.