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 格式。
基本使用
-- -------------------- ---- ------- ----- ----- - - ------ -- ----- ----- -- --- ------------ -- ----- ----------- -- ------- ------------- -- --------- - ------------------- ---- ---------- --
输出结果:
{"name":"王五","age":26,"is_student":true,"languages":["PHP","JavaScript"]}
格式化输出
通过设置 JSON_PRETTY_PRINT
参数,可以使输出的 JSON 更加易读。
-- -------------------- ---- ------- ----- ----- - - ------ -- ----- ----- -- --- ------------ -- ------ ----------- -- -------- ------ -- --------- - ------------------ ------------------- ---- ---------- --
输出结果:
-- -------------------- ---- ------- - ------- ----- ------ --- ------------- ------ ------------ - ------- ----- - -
json_decode()
json_decode()
函数将 JSON 格式的数据转换回 PHP 可识别的数组或对象。
基本使用
<?php $jsonData = '{"name":"孙七","age":29,"is_student":false,"languages":["C#", "Ruby"]}'; $data = json_decode($jsonData); print_r($data); ?>
输出结果:
-- -------------------- ---- ------- -------- ------ - ------ -- -- ----- -- -- ------------ -- ----------- -- ----- - --- -- -- --- -- ---- - -
转换为关联数组
通过设置第二个参数为 true
,可以将 JSON 数据解码为关联数组。
<?php $jsonData = '{"name":"周八","age":27,"is_student":true,"languages":["Go", "Rust"]}'; $data = json_decode($jsonData, true); print_r($data); ?>
输出结果:
-- -------------------- ---- ------- ----- - ------ -- -- ----- -- -- ------------ -- - ----------- -- ----- - --- -- -- --- -- ---- - -
实际应用案例
从数据库查询获取 JSON 数据
假设有一个用户表,我们可以通过查询将数据转换为 JSON 格式。
-- -------------------- ---- ------- ----- -- ------------- ------ - - ----- -- -- ------ -- ----- ------- -- ------------------------ ----- -- -- ------ -- ----- ------- -- ----------------------- -- ---------- - -------------------- ---- ----------- --
输出结果:
[ {"id":1,"name":"小明","email":"xiaoming@example.com"}, {"id":2,"name":"小红","email":"xiaohong@example.com"} ]
接收前端发送的 JSON 数据
前端可以通过 AJAX 发送 JSON 数据到后端,后端可以通过 json_decode()
将其解析为 PHP 数组或对象。
-- -------------------- ---- ------- ----- -- --------------------------- --- ------- - --------- - --------------------------------- ----- - ---------------------- ------ -- ------ --- ----- - ---- ------------ --------------- - ---- - ---- ---- ---- ---- - - --
前端发送的 JSON 数据示例:
{ "username": "testuser", "password": "123456" }
后端接收到并处理后的输出结果:
接收到了以下数据: Array ( [username] => testuser [password] => 123456 )
总结
通过本章的学习,您应该已经掌握了如何在 PHP 中使用 json_encode()
和 json_decode()
函数进行 JSON 数据的处理。这些技能在现代 Web 开发中非常重要,特别是在前后端分离的应用中。希望这些知识能够帮助您更好地处理 JSON 数据,提高开发效率。