PHP 如何生成 JSON
在做网站开发时,你可能遇到过需要把网站数据传递给前端页面,或者和其他小程序、APP对接的情况。这时候,一种叫JSON的格式就成了常用的“数据翻译官”——它能把零散的数字、文字、列表整合成一种双方都能看懂的统一格式,而用PHP实现这个功能其实一点都不难。
先搞懂:JSON到底是什么?
举个生活化的例子,你想跟朋友说“我家有2只猫,1只叫橘橘,1只叫花花,都爱吃罐头”。如果用JSON来整理,就会变成一段规整的内容:

{
"宠物类型": "猫",
"数量": 2,
"名字列表": ["橘橘", "花花"],
"爱吃的食物": ["罐头", "小鱼干"]
}
这种格式的好处是,不管是你还是你朋友,都能一眼看懂每个信息的对应关系,不会乱。PHP要做的,就是把你网站里的零散数据,转成这种规整的JSON内容。
第一步:准备好要转成JSON的PHP数据
在PHP里,最常用的用来转JSON的是数组,就像你把猫的信息整理成一个小清单。比如你要统计网站最近3天的访客数,就可以先写一个数组存这些数据:
<?php
// 准备要转换的PHP数组数据
$visitorData = [
"日期" => "2024-10-01",
"访客数" => 128,
"热门页面" => ["首页", "商品页", "博客页"]
];
?>
这里的数组就对应了刚才JSON里的各个信息项,键(比如“日期”)和值(比如“2024-10-01”)一一对应,非常好理解。
第二步:用内置函数一键生成JSON
PHP早就给我们准备了现成的工具,不用自己手动拼字符串,就是json_encode()函数。它就像一个智能整理箱,只要把准备好的数组放进去,它就能自动转成标准的JSON格式。
还是拿刚才的访客数例子,直接调用函数就行:
<?php
$visitorData = [
"日期" => "2024-10-01",
"访客数" => 128,
"热门页面" => ["首页", "商品页", "博客页"]
];
// 把数组转成JSON字符串
$jsonStr = json_encode($visitorData);
// 输出结果看看
echo $jsonStr;
?>
运行这段代码后,页面就会输出我们开头看到的那段规整的JSON内容,是不是特别简单?
进阶优化:让JSON更易读
有时候我们转出来的JSON是挤成一团的,看起来乱糟糟的,就像把猫的信息全写在一行,没人愿意仔细看。这时候可以给json_encode()加个小参数JSON_PRETTY_PRINT,就能让它自动排版,每个信息换行缩进,方便调试和查看:
<?php
$visitorData = [
"日期" => "2024-10-01",
"访客数" => 128,
"热门页面" => ["首页", "商品页", "博客页"]
];
// 加参数让JSON格式化输出
$jsonStr = json_encode($visitorData, JSON_PRETTY_PRINT);
echo $jsonStr;
?>
这样输出的内容就会整齐好看,不管是你自己检查数据,还是给其他开发者看,都方便很多。
注意1个常见小坑
如果你的数据里有中文,直接转出来可能会显示成一串乱码,比如“橘橘”变成“\u6a59\u6a59”。这是因为默认编码的问题,只要再加个参数JSON_UNESCAPED_UNICODE就能解决:
<?php
$catData = [
"名字" => "橘橘",
"年龄" => 2
];
// 解决中文乱码问题
$jsonStr = json_encode($catData, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
echo $jsonStr;
?>
这样输出的JSON里,中文就会正常显示,不会变成看不懂的编码了。
其实用PHP生成JSON,核心就是两步:先把要转的数据整理成PHP数组,再用json_encode()函数处理,根据需要加上格式化和中文转义的参数就行。不管是简单的访客统计,还是复杂的用户信息列表,用这个方法都能快速生成标准的JSON内容,满足网站对接、数据交互的需求。