php处理json依赖json_encode()和json_decode():前者将php数据转为json字符串,需用json_unescaped_unicode等参数避免中文乱码、实现格式化;后者将json字符串解析为php数组或对象,须校验json_last_error()防静默失败,并依场景选返回类型与错误处理方式。

PHP处理JSON主要靠两个函数:json_encode() 把PHP数据转成JSON字符串,json_decode() 把JSON字符串转回PHP变量。用对参数,中文不乱码、结构不踩坑、错误能捕获。
json_encode:把数组或对象变成JSON字符串
传入PHP数组或对象,输出标准JSON格式字符串。默认中文会被转成\uXXXX,想显示原文得加选项。
- 保留中文:加 JSON_UNESCAPED_UNICODE,比如
json_encode($data, JSON_UNESCAPED_UNICODE) - 格式化输出(带缩进换行):加 JSON_PRETTY_PRINT,调试时更清晰
- 强制转为对象(即使传的是索引数组):加 JSON_FORCE_OBJECT
- 确保输入是UTF-8编码,否则可能返回空或null;GB2312/GBK需先转码
json_decode:把JSON字符串还原成PHP变量
这是解析环节的核心。关键在第二个参数——它决定返回数组还是对象。
使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。
- 设为 true:返回关联数组,可用
$arr['name']访问,适合 foreach 遍历 - 不填或设为 false:返回 stdClass 对象,用
$obj->name访问 - 大整数怕精度丢失?加 JSON_BIGINT_AS_STRING,让超长数字(如用户ID)保持字符串形式
- 深度嵌套JSON可调
$depth参数,默认512够用,极端情况可适当增减
必须做的错误检查
JSON格式稍有错误(比如多逗号、缺引号),json_decode() 就会静默返回 null,不报错也不提示。
- 每次解码后,用
json_last_error() === JSON_ERROR_NONE判断是否成功 - 出错时用
json_last_error_msg()获取具体错误信息,比如“Syntax error”或“Control character error” - PHP 7.3+ 可直接加 JSON_THROW_ON_ERROR 选项,让失败时抛异常,更易捕获
常见使用场景示例
实际开发中,这几个模式最常用:
-
API响应:查数据库得到关联数组,
header('Content-Type: application/json; charset=utf-8');+echo json_encode($rows, JSON_UNESCAPED_UNICODE); -
接收前端POST的JSON:用
$raw = file_get_contents('php://input');拿原始体,再json_decode($raw, true) -
读取配置文件:如
$conf = json_decode(file_get_contents('config.json'), true); -
缓存数据存储:序列化后存Redis或文件,读取时再
json_decode()还原
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










