我已经阅读了一些关于此的问题,但我仍然不清楚。哪个是正确的:
{"some_parameter": "true"}
或
{"some_parameter": true}
我认为第二种是通过 json 发送布尔值的正确、适当的方法?但第一个仍然是有效的 json...
这里的上下文是,我正在构建一个 API(由某些第三方应用程序使用),我想知道完全禁止第一种类型(错误拒绝)或接受布尔数据作为这样的字符串是否合理,并且只是尝试处理(转换)它们?
简短回答,是的,您的第二个示例是发送 JSON 的正确方法。除了字符串之外,您不应该在引号内放置任何其他内容。
长答案,
这取决于数据类型。对于键,是的,您必须使用引号,但仅限于字符串。另外,如果您想在其中放置引号,则可以使用单引号。 (或使用转义)
'
例如, 对比
"
对于您的 bool 值,如果您希望它直接转换为 bool,则不需要包含引号。整数和双精度值相同。
但是如果您想将其作为字符串传递,则需要将其放在引号内。
通常,当您讨论哪些类型的系统将接受您的数据时,会询问这些类型的问题。
通常在任何地方使用字符串要容易得多,但它的效率也非常低,并且会导致接收者如果想要使用 int 进行算术运算,则需要强制转换它们,但它是作为字符串传递的。
布尔值必须在不带引号的情况下传递。 Boolean 是 json 支持的类型之一:https://www.json.org/json-en.html 预期值为 true 或 false,不带引号。
当解析数据的接收端是像 Javascript 这样的弱类型语言时,它可能仍然可以使用引号,当您在布尔上下文中使用它时,它会自动转换值,但遵循标准的规定总是更好。
是的,我们可以在 Json 中传递布尔值。只是我们需要以小写形式写入值。 例如
{
"fullName": "Deepak Dongre",
"gender": true,
"dob": "1986-11-16",
"mobileNumber": 97959000321,
"tblMstHobbyDetails": []
}
这是有效的 JSON,但它将
some_parameter
定义为内容为“true”的字符串,而不是布尔值:
{"some_parameter": "true"}
这也是有效的 JSON,它将
some_parameter
定义为值为 true 的布尔值:
{"some_parameter": true}
因此,如果您想将
some_parameter
作为真正的布尔值发送,请省略引号。
当然,使用哪个取决于接收方的期望并且能够正确解析。