PHP 如何生成 JSON

在做网站开发时,你可能遇到过需要把网站数据传递给前端页面,或者和其他小程序、APP对接的情况。这时候,一种叫JSON的格式就成了常用的“数据翻译官”——它能把零散的数字、文字、列表整合成一种双方都能看懂的统一格式,而用PHP实现这个功能其实一点都不难。

先搞懂:JSON到底是什么?

举个生活化的例子,你想跟朋友说“我家有2只猫,1只叫橘橘,1只叫花花,都爱吃罐头”。如果用JSON来整理,就会变成一段规整的内容:

PHP 如何生成 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内容,满足网站对接、数据交互的需求。

上一篇 Java 内部类怎么用