PHP JSON

2025年04月17日 | 阅读 4 分钟

什么是 JSON?

JSON (JavaScript Object Notation) 是用于数据交换和存储的最广泛使用的开放标准文件格式之一。它以人类可读的语言利用数组数据类型和属性-值对来表示数据。

JSON 文件通常用于从 Web 服务器读取数据并在网页中显示数据。在本章中,我们将描述 JSON 数据如何在客户端和 PHP 服务器之间进行交换。

JSON 对象看起来像这样

JSON 使我们能够以一种易于在线共享的方式来组织和表达复杂的数据。尽管它以 JavaScript 命名,但 JSON 的设计目的是与所有编程语言协同工作。

让我们看看如何将PHP 变量转换为 JSON。

PHP 变量转换为 JSON (JSON_Encode)

PHP 提供了一些内置函数来处理 JSON。一个名为 json_encode() 的原生 PHP 函数可以帮助您将 PHP 数据转换为 JSON 格式。

语法

示例

让我们看一个在 PHP 中编码 JSON 的示例。

示例

立即执行

输出

{"a":1, "b":2, "c":3, "d":4, "e":5}

为什么要将 PHP 编码为 JSON?

如前所述,JSON 是在线数据交换最广泛使用的格式之一。因此,在某些情况下,PHP 服务器提供和分析 JSON 编码数据的能力可能至关重要。

让我们研究一下如何使用 json_encode() 将不同的 PHP 数据结构编码为 JSON。

PHP 字符串转换为 JSON

字符串的 JSON 编码就是字符串本身。因此,将 PHP 字符串转换为 JSON 非常简单;返回相同的字符串。

让我们用一个例子来说明这一点

示例

立即执行

输出

"Good Morning!"

PHP 对象转 JSON

使用第 1.1 节中的 Library 示例,让我们创建一个 Book 类的实例来学习如何将 PHP 对象 JSON 编码。对于 book 的实例,我们将设置两个实例变量并使用 json_encode() 对对象进行编码。

示例

立即执行

输出

{"id":202, "model": "Tesla Model S"}

PHP 数组转 JSON

PHP 支持三种不同类型的数组:多维数组关联数组索引数组。让我们研究一下它们是什么以及一些将它们编码为 JSON 的示例。

JSON 索引数组

由索引号表示的常规数组称为索引数组。

$arr = array(1,2,3,4); // [1,2,3,4] 是一个例子。

将它们转换为 JSON 很简单。

示例

立即执行

输出

[1,2,3,4]

JSON 转关联数组

在关联数组中,使用命名键作为值的索引。

$age = array("John"=>"11", "Ken"=>"19", "Tim"=>"14"); 例如

通过像这样编码关联数组,我们还可以获得前面看到的 book JSON 对象。

示例

立即执行

输出

 {"id":101,"label":"Lorem Ipsum"}

JSON_Decode:将 JSON 变量转换为 PHP

如果您的 JavaScript 前端将基于 JSON 的数据发送回您的 PHP 服务器,这很可能,您需要一种方法来解码 JSON 数据,以便 PHP 可以解释它。

为此,我们可以使用 PHP 的 json_decode() 函数,该函数接受 JSON 编码的文本并返回相应的 PHP 变量。

语法

示例

让我们看一个解码 JSON 字符串的示例。

示例

立即执行

输出

array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}

json_encode 和 json_decode 结合使用的示例

示例

立即执行

输出

JSON Data:
{"departments":[{"id":301, "name":"Computer Science"},{"id":302,"name":"Mechanical Engineering"}]}
Decoded PHP Object:
stdClass Object
(
    [departments] => Array
        (
            [0] => stdClass Object
                (
                    [id] => 301
                    [name] => Computer Science
                )

            [1] => stdClass Object
                (
                    [id] => 302
                    [name] => Mechanical Engineering
                )
        )
)

此 PHP 代码演示了 JSON 编码(将 JSON 转换为 PHP 对象)和 JSON 解码(将 PHP 对象转换为 JSON)。我们首先定义 Department 和 University 的课程。然后,我们定义了两个 Department 类对象,并为它们分配了不同的 id 和 name 属性。University 类对象被分配了这些部门对象的数组。然后使用 json_encode($university) 将 University 对象和部门列表编码为 JSON 字符串。

控制台会收到此 JSON 字符串。最后,我们通过调用 json_decode($jsonData) 将我们得到的 JSON 字符串解码回 PHP 对象,这有效地使我们回到了原始结构。最后,我们通过调用 print_r() 来打印此 PHP 对象,展示了 JSON 数据如何在结构化的 PHP 对象和通用的文本格式之间轻松地相互转换。