PHP 如何返回 JSON

日常做网站或小程序开发时,经常会遇到需要让后端返回数据的场景——比如你在做一个天气查询工具,前端要拿到城市的温度、天气状况,后端怎么把这些数据准确传给前端呢?PHP里最常用的方式就是返回JSON格式的数据,它就像一个标准化的“数据快递盒”,前后端约定好格式,就不会出现数据传错、读不懂的问题。接下来就用生活化的例子,一步步讲清楚PHP返回JSON的方法。

先搞懂:JSON到底是什么?

很多人怕JSON是复杂的技术术语,其实它就是一种“结构化的字符串”,专门用来存简单的键值对数据,比如{"城市":"北京","温度":"22℃","天气":"晴"},就像你给朋友发消息,不说“我在外面,穿薄外套就行”,而是直接说“地点北京,温度22度,天气晴”,双方都能一眼看懂,不会有歧义。

PHP 如何返回 JSON

第一步:用PHP数组“打包”数据

PHP里不能直接输出JSON,得先把要返回的数据放进数组里,就像你要寄快递,得先把东西放进快递盒里。比如做一个简单的用户信息返回,先写一个存数据的数组:

`php

// 这就是要返回给前端的用户数据,先放进PHP数组里

$userData = [

"name" => "小明",

"age" => 28,

"isVip" => true, // JSON里的布尔值,PHP里直接用true/false就行

"hobbies" => ["爬山", "看书", "打篮球"] // 数组可以直接转成JSON的数组

];

`

这个数组就像你整理好的“快递清单”,里面的每一项都是要传给前端的信息。

第二步:把PHP数组转成JSON格式

有了数组,接下来就是用PHP自带的函数把它转成JSON字符串,这个函数就是json_encode(),相当于把“快递清单”放进“标准化快递盒”里。直接调用这个函数就行,代码也很简单:

`php

// 把PHP数组转成JSON格式的字符串

$jsonData = json_encode($userData);

`

这里有个小细节要注意:如果数组里有中文,转出来的JSON可能会是乱码,比如{"name":"\u5c0f\u660e"},这时候只要给json_encode()加个参数就能解决:

`php

// 加JSON_UNESCAPED_UNICODE参数,避免中文乱码

$jsonData = json_encode($userData, JSON_UNESCAPED_UNICODE);

`

就像你寄快递时标注“这是中文文件,不用转成拼音”,快递盒能直接识别中文。

第三步:告诉前端“我要发的是JSON”

转成JSON字符串后,还需要告诉前端:“我现在发的是JSON格式的数据,你按这个格式读”,就像寄快递时贴“生鲜件”“文件件”的标签,前端才能正确解析。这一步要用到PHP的header()函数,设置响应头的类型:

`php

// 设置响应头为JSON格式,前端就能正确识别

header('Content-Type: application/json; charset=utf-8');

`

如果忘了这一步,前端可能会把JSON当成普通字符串输出,比如直接显示{"name":"小明","age":28},而不是解析成可用的对象,就像快递贴错标签,快递员当成普通包裹扔到驿站,你要花时间拆。

最后:把JSON数据输出给前端

设置好所有东西,最后一步就是把生成的JSON字符串输出,就像把贴好标签的快递交给快递员:

`php

// 输出JSON数据,完成返回

echo $jsonData;

`

把以上几步合起来,完整的代码就是:

`php

<?php

// 1. 准备要返回的数据,放进PHP数组

$userData = [

"name" => "小明",

"age" => 28,

"isVip" => true,

"hobbies" => ["爬山", "看书", "打篮球"]

];

// 2. 设置响应头,告诉前端是JSON格式

header('Content-Type: application/json; charset=utf-8');

// 3. 转数组为JSON字符串,输出

echo json_encode($userData, JSON_UNESCAPED_UNICODE);

?>

`

运行这个PHP文件,前端拿到的就是清晰可用的JSON数据,不会出现乱码或格式错误的问题。

其实PHP返回JSON的核心逻辑就是:先整理成PHP数组,转成标准化JSON字符串,告诉前端格式,再输出。只要跟着这个步骤走,就能轻松解决日常开发中大部分需要返回JSON的场景,比如返回列表、提交表单后的反馈、接口数据请求等,不用再担心数据传错的问题。

上一篇 TypeScript 如何发布类型包