如何在 PHP 中美化输出 JSON:新手完整指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:为什么 PHP 中的 JSON 看起来像一团乱麻?

\n\n

想象一下:您编写了一个 PHP 脚本,它从 API 获取数据或为前端生成响应。您使用 echo json_encode($data) 输出结果——然后在浏览器或控制台中看到类似这样的内容:

\n\n
{"users":[{"id":1,"name":"Иван","email":"ivan@example.com"},{"id":2,"name":"Мария","email":"maria@example.com"}]}
\n\n

您得承认,阅读这种未格式化的字符串,就像试图辨认医生的手稿。尤其是当数据量很大且嵌套很深时。这时,PHP 中的 JSON 美化打印就派上用场了。

\n\n

本文面向刚开始使用 PHP 和 JSON 的开发者。我们将探讨如何让 JSON 输出变得美观、可读且易于调试。您不仅会学到基本方法,还会掌握一些有用的技巧,为您节省大量时间。开始吧!

\n\n

什么是美化打印,为什么需要它?

\n\n

美化打印(字面意思是“漂亮的打印”)是一种带有缩进、换行和对齐的数据格式化方式。对于 JSON 而言,这意味着您将得到一个结构化的输出,而不是一长串文本,其中每个键和值都位于其应有的位置。

\n\n

想象一下您在调试 API 请求或检查配置文件。如果没有美化打印,您将花费大量时间试图弄清楚一个对象在哪里结束,另一个对象在哪里开始。有了格式化,一切都一目了然。

\n\n

在 PHP 中,有几种方法可以实现 JSON 的美观输出。我们将从最简单和最流行的方法开始——使用 JSON_PRETTY_PRINT 标志。

\n\n

方法 1:JSON_PRETTY_PRINT——您最好的朋友

\n\n

在 PHP 中实现 JSON 美化打印的最简单方法是在调用 json_encode() 函数时使用 JSON_PRETTY_PRINT 常量。此常量自 PHP 5.4.0 起可用。

\n\n

基本示例

\n\n
<?php\n$data = [\n    'users' => [\n        ['id' => 1, 'name' => 'Иван', 'email' => 'ivan@example.com'],\n        ['id' => 2, 'name' => 'Мария', 'email' => 'maria@example.com']\n    ]\n];\n\n$json = json_encode($data, JSON_PRETTY_PRINT);\necho $json;\n?>
\n\n

结果:

\n\n
{\n    "users": [\n        {\n            "id": 1,\n            "name": "Иван",\n            "email": "ivan@example.com"\n        },\n        {\n            "id": 2,\n            "name": "Мария",\n            "email": "maria@example.com"\n        }\n    ]\n}
\n\n

好多了,对吧?现在每个数组元素都单独占一行,缩进也设置好了,结构一目了然。

\n\n

与其他标志组合使用

\n\n

JSON_PRETTY_PRINT 可以并且应该与其他标志组合使用,以实现更精细的控制。例如:

\n\n
    \n
  • JSON_UNESCAPED_UNICODE — 不转义西里尔字母和其他 Unicode 字符(您将看到 Иван 而不是 \\u0438\\u0432\\u0430\\u043d)。
  • \n
  • JSON_UNESCAPED_SLASHES — 不转义斜杠(对 URL 很有用)。
  • \n
  • JSON_NUMERIC_CHECK — 将包含数字的字符串转换为数字类型。
  • \n
\n\n
<?php\n$data = [\n    'message' => 'Привет, мир!',\n    'url' => 'https://example.com/api/v1/users'\n];\n\n$json = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);\necho $json;\n?>
\n\n

结果:

\n\n
{\n    "message": "Привет, мир!",\n    "url": "https://example.com/api/v1/users"\n}
\n\n

请注意:西里尔字母正常显示,斜杠未被转义。这通常是为人眼输出 JSON 的理想方式。

\n\n

方法 2:格式化现有的 JSON 字符串

\n\n

如果您已经有一个 JSON 字符串(例如,从文件或数据库获取的),并且需

博客

书籍推荐