php处理json的核心函数是json_encode和json_decode:前者将php数据编码为json字符串,支持unicode保留、格式美化等选项;后者将json字符串解码为php数组或对象,可选返回关联数组或对象,并需配合json_last_error()等函数进行错误处理。

PHP处理JSON的核心函数就两个:json_encode 和 json_decode,它们是官方JSON扩展提供的基础工具,几乎所有JSON操作都围绕它们展开。
json_encode:把PHP数据转成JSON字符串
用于将数组、对象等PHP变量编码为标准JSON格式的字符串,常用于API响应、前端通信或数据存储。
- 基本用法:
json_encode($data),默认输出紧凑格式 - 常用选项组合:
- JSON_UNESCAPED_UNICODE:保留中文原样,不转成\uXXXX
- JSON_PRETTY_PRINT:添加缩进和换行,便于调试
- JSON_NUMERIC_CHECK:把数字字符串(如"123")自动转为整型
- JSON_FORCE_OBJECT:强制索引数组输出为{}对象而非[]数组
- 失败时返回false,建议配合
json_last_error()检查错误
json_decode:把JSON字符串转回PHP变量
用于解析接收到的JSON数据(比如前端POST的原始请求体),还原为PHP可操作的结构。
- 基本语法:
json_decode($jsonString, $assoc = false) - 关键参数:
- 第二个参数设为
true→ 返回关联数组,用$arr['name']访问 - 不传或设为
false(默认)→ 返回对象,用$obj->name访问
- 第二个参数设为
- 失败时返回null,同样建议用
json_last_error()判断原因 - 支持大整数保护:
JSON_BIGINT_AS_STRING防止64位整数精度丢失
配套辅助函数:查错与验证
仅靠encode/decode不够健壮,出错时需定位问题:
-
json_last_error():返回上一次JSON操作的错误码(如JSON_ERROR_SYNTAX) -
json_last_error_msg():返回对应错误的可读提示(如"Syntax error") -
json_validate($string)(PHP 7.3+):直接判断字符串是否为有效JSON,返回布尔值,不解析也不报错
获取原始JSON输入的常见方式
前端发来的JSON通常不在$_POST里,而是原始请求体:
- 用
file_get_contents('php://input')读取原始JSON字符串 - 再交给
json_decode()解析,避免因Content-Type不是application/x-www-form-urlencoded导致数据丢失 - 记得检查
get_headers()['Content-Type']是否含application/json
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











