布尔值可以/应该在带引号的 json 中传递吗?

问题描述 投票:0回答:4

我已经阅读了一些关于此的问题,但我仍然不清楚。哪个是正确的:

{"some_parameter": "true"}

{"some_parameter": true}

我认为第二种是通过 json 发送布尔值的正确、适当的方法?但第一个仍然是有效的 json...

这里的上下文是,我正在构建一个 API(由某些第三方应用程序使用),我想知道完全禁止第一种类型(错误拒绝)或接受布尔数据作为这样的字符串是否合理,并且只是尝试处理(转换)它们?

json boolean
4个回答
25
投票

简短回答,是的,您的第二个示例是发送 JSON 的正确方法。除了字符串之外,您不应该在引号内放置任何其他内容。

长答案

这取决于数据类型。对于键,是的,您必须使用引号,但仅限于字符串。另外,如果您想在其中放置引号,则可以使用单引号。 (或使用转义)

' 

例如, 对比

"

对于您的 bool 值,如果您希望它直接转换为 bool,则不需要包含引号。整数和双精度值相同。

但是如果您想将其作为字符串传递,则需要将其放在引号内。

通常,当您讨论哪些类型的系统将接受您的数据时,会询问这些类型的问题。

通常在任何地方使用字符串要容易得多,但它的效率也非常低,并且会导致接收者如果想要使用 int 进行算术运算,则需要强制转换它们,但它是作为字符串传递的。


12
投票

布尔值必须在不带引号的情况下传递。 Boolean 是 json 支持的类型之一:https://www.json.org/json-en.html 预期值为 true 或 false,不带引号。

当解析数据的接收端是像 Javascript 这样的弱类型语言时,它可能仍然可以使用引号,当您在布尔上下文中使用它时,它会自动转换值,但遵循标准的规定总是更好。


7
投票

是的,我们可以在 Json 中传递布尔值。只是我们需要以小写形式写入值。 例如

{
        "fullName": "Deepak Dongre",
        "gender": true,
        "dob": "1986-11-16",
        "mobileNumber": 97959000321,
        "tblMstHobbyDetails": []
}

0
投票

这是有效的 JSON,但它将

some_parameter
定义为内容为“true”的字符串,而不是布尔值:

{"some_parameter": "true"}

这也是有效的 JSON,它将

some_parameter
定义为值为 true 的布尔值:

{"some_parameter": true}

因此,如果您想将

some_parameter
作为真正的布尔值发送,请省略引号。

当然,使用哪个取决于接收方的期望并且能够正确解析。

© www.soinside.com 2019 - 2024. All rights reserved.