ThinkPHP 6.0 返回 JSON 数据推荐使用 json() 方法或自动类型识别机制:直接调用 json($data) 自动设置响应头并输出;或返回数组/对象配合 Accept: application/json 头触发自动 JSON 响应;建议封装 success/fail 统一格式,注意 UTF-8 编码、时间处理及 CORS 配置。

在 ThinkPHP 6.0 中返回 JSON 数据非常简单,核心是使用 json() 方法或自动类型识别机制,无需手动调用 json_encode()。
使用 json() 方法直接返回
控制器中可直接调用内置的 json() 方法,传入数组、对象或字符串,框架会自动设置响应头为 application/json 并输出 JSON 字符串:
- 支持关联数组、索引数组、stdClass 对象、ThinkPHP 的 Collection 实例等
- 默认状态码为 200,也可自定义:
return json($data, 201) - 可附加响应头:
return json($data)->header(['X-Api-Version' => 'v1'])
利用系统自动 JSON 响应(推荐)
当方法返回数组或对象,并且请求头中包含 Accept: application/json(如 AJAX 请求常见),ThinkPHP 6.0 会自动将结果转为 JSON 响应:
使用约定式提交(Conventional Commits)生成标准化的 Git 提交信息。适用于以下场景: (1) 暂存更改时需要提交信息; (2) 审查 diff 时希望获得结构化摘要; (3) 编写 PR 描述或变更日志(changelog)条目; (4) 用户明确要求“为本次更改编写提交信息”。 该功能会分析已暂存/未暂存的 diff,并生成按类型(type)划分范围的提交信息。
- 控制器方法直接
return ['code' => 0, 'msg' => 'success', 'data' => $list]; - 需确保未开启模板渲染(即不调用
view()),否则会报错或返回 HTML - 该行为由
think\Response的自动类型协商机制触发,无需额外配置
统一 JSON 返回格式(建议封装)
为保持接口风格一致,通常会封装一个公共方法或基类返回结构化 JSON:
立即学习“PHP免费学习笔记(深入)”;
- 例如定义
success($data = [], $msg = 'ok', $code = 0)方法 - 内部调用
return json(compact('code', 'msg', 'data')); - 错误时可用
fail($msg = 'error', $code = -1, $data = [])统一处理
注意事项与调试技巧
避免常见问题,提升开发效率:
- 中文乱码?确保 PHP 文件保存为 UTF-8 无 BOM 格式
- 时间字段被转成对象?使用
date('Y-m-d H:i:s', $time)或配置default_json_encode_depth - 调试时想看原始数据?临时加
dump($data); exit;,但上线前务必移除 - 跨域请求失败?需配合 CORS 中间件或手动设置响应头:
->header('Access-Control-Allow-Origin', '*')


















