JSON 简介
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它易于人阅读和编写,同时也易于机器解析和生成。JSON 基于 JavaScript 的一个子集,但与语言无关,几乎所有的编程语言都有相应的库或工具来处理 JSON 数据。
JSON 数据格式
JSON 支持的数据类型包括:
- 字符串
- 数值(整数和浮点数)
- 布尔值(true 或 false)
- 数组
- 对象
- null
字符串
字符串是用双引号括起来的文本。
{
"name": "张三"
}数值
数值可以是整数或浮点数。
{
"age": 30,
"height": 1.75
}布尔值
布尔值只有两种可能:true 或 false。
{
"is_student": true,
"is_employed": false
}数组
数组是一个有序的值集合,每个值可以是任何数据类型。
{
"languages": ["Java", "Python", "PHP"]
}对象
对象是一个无序的键值对集合。
{
"person": {
"name": "李四",
"age": 28
}
}null
null 表示空值。
{
"address": null
}PHP 中的 JSON 处理
PHP 提供了两个主要函数用于 JSON 数据的处理:json_encode() 和 json_decode()。
json_encode()
json_encode() 函数将 PHP 数组或对象转换为 JSON 格式。
基本使用
// www.javascriptcn.com code example
<?php
$data = [
'name' => '王五',
'age' => 26,
'is_student' => true,
'languages' => ['PHP', 'JavaScript']
];
$jsonData = json_encode($data);
echo $jsonData;
?>输出结果:
{"name":"王五","age":26,"is_student":true,"languages":["PHP","JavaScript"]}格式化输出
通过设置 JSON_PRETTY_PRINT 参数,可以使输出的 JSON 更加易读。
// www.javascriptcn.com code example
<?php
$data = [
'name' => '赵六',
'age' => 32,
'is_student' => false,
'languages' => ['Java', 'C++']
];
$jsonData = json_encode($data, JSON_PRETTY_PRINT);
echo $jsonData;
?>输出结果:
// www.javascriptcn.com code example
{
"name": "赵六",
"age": 32,
"is_student": false,
"languages": [
"Java",
"C++"
]
}json_decode()
json_decode() 函数将 JSON 格式的数据转换回 PHP 可识别的数组或对象。
基本使用
<?php
$jsonData = '{"name":"孙七","age":29,"is_student":false,"languages":["C#", "Ruby"]}';
$data = json_decode($jsonData);
print_r($data);
?>输出结果:
// www.javascriptcn.com code example
stdClass Object
(
[name] => 孙七
[age] => 29
[is_student] =>
[languages] => Array
(
[0] => C#
[1] => Ruby
)
)转换为关联数组
通过设置第二个参数为 true,可以将 JSON 数据解码为关联数组。
<?php
$jsonData = '{"name":"周八","age":27,"is_student":true,"languages":["Go", "Rust"]}';
$data = json_decode($jsonData, true);
print_r($data);
?>输出结果:
// www.javascriptcn.com code example
Array
(
[name] => 周八
[age] => 27
[is_student] => 1
[languages] => Array
(
[0] => Go
[1] => Rust
)
)实际应用案例
从数据库查询获取 JSON 数据
假设有一个用户表,我们可以通过查询将数据转换为 JSON 格式。
// www.javascriptcn.com code example
<?php
// 假设这是从数据库查询的结果
$users = [
['id' => 1, 'name' => '小明', 'email' => 'xiaoming@example.com'],
['id' => 2, 'name' => '小红', 'email' => 'xiaohong@example.com']
];
$jsonUsers = json_encode($users);
echo $jsonUsers;
?>输出结果:
[
{"id":1,"name":"小明","email":"xiaoming@example.com"},
{"id":2,"name":"小红","email":"xiaohong@example.com"}
]接收前端发送的 JSON 数据
前端可以通过 AJAX 发送 JSON 数据到后端,后端可以通过 json_decode() 将其解析为 PHP 数组或对象。
// www.javascriptcn.com code example
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$jsonData = file_get_contents('php://input');
$data = json_decode($jsonData, true);
if ($data !== null) {
echo '接收到了以下数据:';
print_r($data);
} else {
echo '无效的 JSON 数据';
}
}
?>前端发送的 JSON 数据示例:
{
"username": "testuser",
"password": "123456"
}后端接收到并处理后的输出结果:
接收到了以下数据:
Array
(
[username] => testuser
[password] => 123456
)总结
通过本章的学习,您应该已经掌握了如何在 PHP 中使用 json_encode() 和 json_decode() 函数进行 JSON 数据的处理。这些技能在现代 Web 开发中非常重要,特别是在前后端分离的应用中。希望这些知识能够帮助您更好地处理 JSON 数据,提高开发效率。