gpt4 book ai didi

json - 在 JSON 中格式化 "true"的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-03 03:58:30 27 4
gpt4 key购买 nike

我想给出一个简单的true响应,但是根据various JSON parsers ,这是无效有效的 JSON:

true

但是,PHP 和 Javascript 的行为就像“true”确实是 true 的有效 JSON,无论是在编码还是解码时:

PHP-

echo json_encode( true ); // outputs: true
echo json_decode( true ); // outputs: 1
echo gettype(json_decode( true )); // outputs: boolean

jQuery-

JSON.stringify( true );   // outputs: true
jQuery.parseJSON( true ); // outputs: true
typeof jQuery.parseJSON( true ); // outputs: boolean

那么发送 JSON 格式的 true 响应的正确方法是什么?验证者都错了吗?

最佳答案

来自the RFC :

A JSON text is a serialized object or array.

  JSON-text = object / array

大多数解析器不接受任何非对象或数组作为根。只有不太严格的解析器才会接受您的 JSON 字符串仅包含 true

所以你的选择是

  • 不使用 JSON
  • 将 bool 值包装在对象中:{"result":true} 或数组:[true]

更新:

情况发生了变化。新版本的 JSON 规范(请参阅 this one )明确接受任何序列化值作为文档的根:

A JSON text is a serialized value. Note that certain previousspecifications of JSON constrained a JSON text to be an object or anarray. Implementations that generate only objects or arrays where aJSON text is called for will be interoperable in the sense that allimplementations will accept these as conforming JSON texts.

这意味着现在使用 bool 值作为唯一值在法律上是可以接受的。但当然,并非所有使用中的库都会更新,这意味着使用对象或数组以外的任何库可能仍然存在问题。

关于json - 在 JSON 中格式化 "true"的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19435906/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com