php解析json布尔值时,true/false/null会自动映射为对应布尔/null类型;需确保json语法正确、utf-8编码,避免引号包裹布尔字面量,并建议解析后做类型检查。

PHP 解析 JSON 中的布尔值很直接,但容易因忽略细节而出错。
JSON 的 true 和 false 会自动映射为 PHP 的布尔类型
只要 JSON 字符串语法正确,json_decode() 就能原样还原:
-
"true"(不带引号)→ PHP 的true(布尔值) -
"false"→ PHP 的false -
"null"→ PHP 的null
例如:
$json = '{"active": true, "locked": false, "reason": null}';
$data = json_decode($json, true);
var_dump($data['active']); // bool(true)
var_dump($data['locked']); // bool(false)
var_dump($data['reason']); // NULL
注意几个关键点
Miller (mlr) 是一个命令行工具,用于查询、整形和重新格式化名称索引数据,如 CSV、TSV、JSON 和 JSON Lines。它将 awk、sed、cut、join 和 sort 的功能整合到一个专为结构化数据处理而构建的单一工具中。
- 不要用引号包住布尔字面量:
"active": "true"是字符串,不是布尔值 - 解析后用
is_bool()或gettype()可验证类型,避免误判 - 若原始 JSON 来自不可信来源,建议解析后加类型检查,比如:
if (!is_bool($data['active'])) { $data['active'] = (bool)$data['active']; // 安全兜底 }
遇到布尔值变字符串或解析失败?常见原因
- JSON 字符串本身含语法错误(如多逗号、单引号、中文标点),可用
json_last_error()检查 - 编码非 UTF-8(
json_decode仅支持 UTF-8),导致解析中断并返回null - 使用了
JSON_THROW_ON_ERROR但没加try/catch,程序直接报错
不复杂但容易忽略
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










