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

Ini*_*igo 5 json boolean

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

{"some_parameter": "true"}
Run Code Online (Sandbox Code Playgroud)

要么

{"some_parameter": true}
Run Code Online (Sandbox Code Playgroud)

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

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

小智 9

布尔值必须不带引号传递。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": []
}
Run Code Online (Sandbox Code Playgroud)

  • 当它是真的时它是什么性别?:DDD (7认同)

Jac*_*ski 5

简短的回答,是的,这是发送JSON的正确方法。除了引号外,您不应在字符串中放置其他任何内容。

长答案

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

' 
Run Code Online (Sandbox Code Playgroud)

例如,vs

"
Run Code Online (Sandbox Code Playgroud)

至于您的布尔值,如果您希望将其直接转换为布尔值,则不需要包含引号。整数和双精度值相同。

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

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

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

  • 抱歉,如果我的评论很复杂,我试图在这里给出完整的图片。简短版本,是的,您是正确的,并且通过不在引号内包含 bool 值来执行 JSON 标准。我来更新一下,哈哈 (2认同)