1 简介
1.1 简介
JSON格式数据是当今WEB应用中广泛使用的一种数据格式。 它具有结构清晰、语法简单、字节占用量小等特点。 与早期流行的XML格式数据相比,JSON格式数据具有更便携、可读性更好、解析速度更快等优点。
PHP语言在操作JSON格式数据方面具有先天的优势。 由于PHP是弱类型语言,而PHP自带的字段和JSON格式数据的数据结构基本相同,因此PHP对JSON格式数据的操作特别简单、方便、快捷。
2.JSON
JSON格式数据除了整数、浮点、字符串、布尔等基本数据类型外,还有两种特殊的集合类型,分别是链表(Array)和字典(Dictionary)。 下面付哥就分别给大家介绍一下。 一度。
2.1 字典
所谓字典类型是指结构中的数据以Key-Value的形式成对存储。 通过Key可以快速获取对应的Value。 字典结构中的Key不能重复。
{
"id": 35,
"name": "鬼谷子叔叔",
"url": "https://tongfu.net/home/35.html"
}
2.2 领域
链表用于存储多组数据。 链表中的元素之间没有关系。 链表中的元素使用连续的整数作为键。 通过按键可以快速获取对应的元素。
[
"PHP",
"Python",
"Java",
"JavaScript",
"C/C++",
"Asp.net"
]
3.链表和JSON
在PHP语言中,链表到JSON格式数据的转换是通过json_encode函数完成的。 PHP 字段到 JSON 格式数据的转换将基于形参中元素的键是否满足连续整数的条件。 如果是这样,它们将被转换为 JSON 字段。 ,如果不满足php定义二维数组,就会转成JSON字典。
3.1 直接转换
如果直接通过json_encode转换的话,汉字部分会转换成unicode编码。
$jsonData = json_encode(array(
"id"=>35,
"name"=>"鬼谷子叔叔",
"url"=>"https://tongfu.net/home/35.html"
));
echo $jsonData. "
";
$jsonData = json_encode(array(
"PHP",
"Python",
"Java",
"JavaScript",
"C/C++",
"Asp.net"
));
echo $jsonData. "
";
3.2 汉字转换与显示
如果想保留汉字内容而不将其转换为unicode编码,则需要使用以下方法进行转换。
$jsonData = json_encode(array(
"id"=>35,
"name"=>"鬼谷子叔叔",
"url"=>"https://tongfu.net/home/35.html"
), JSON_UNESCAPED_UNICODE);
echo $jsonData. "
";
$jsonData = json_encode(array(
"PHP",
"Python",
"Java",
"JavaScript",
"C/C++",
"Asp.net"
), JSON_UNESCAPED_UNICODE);
echo $jsonData. "
";
4. 对象和 JSON
在PHP语言中,对象转换为JSON格式数据也是通过json_encode函数完成的。 PHP对象转换为JSON格式数据时,肯定会转换为字典类型。
4.1 直接转换
如果直接通过json_encode转换的话,汉字部分会转换成unicode编码。
class user{
public $id;
public $name;
public $url;
}
class APIController extends SystemAPIController{
protected function user_process(){
$user = new user();
$user->id = 35;
$user->name = "鬼谷子叔叔";
$user->url = "https://tongfu.net/home/35.html";
$jsonData = json_encode($user);
var_dump($jsonData);
}
}
4.2 汉字转换与显示
如果想保留汉字内容而不将其转换为unicode编码php定义二维数组,则需要使用以下方法进行转换。
class user{
public $id;
public $name;
public $url;
}
class APIController extends SystemAPIController{
protected function user_process(){
$user = new user();
$user->id = 35;
$user->name = "鬼谷子叔叔";
$user->url = "https://tongfu.net/home/35.html";
$jsonData = json_encode($user, JSON_UNESCAPED_UNICODE);
var_dump($jsonData);
}
}
5. 编码和解码
5.1 编码
所谓JSON编码就是将其他类型的数据转换为JSON格式数据的过程。 由于JSON格式是一种富含特殊格式的字符串,因此JSON编码是将各种其他类型的数据转换为可逆字符串的过程。 。
PHP 实现编码的方式是通过内置的 json_encode 方法。 不幸的是,该方法仅支持富含英文的源数据的UTF-8编码。 如果源数据包含英文且不是UTF-8编码,仍然会返回false,如果编码失败。
$jsonData = json_encode(array(
"id"=>35,
"name"=>"鬼谷子叔叔",
"url"=>"https://tongfu.net/home/35.html"
), JSON_UNESCAPED_UNICODE);
echo "JSON格式
";
var_dump($jsonData);
5.2 解码
所谓JSON解码,就是将JSON格式数据恢复为原始数据类型的过程。 由于JSON格式数据看似是富含特殊格式的字符串,所以JSON解码就是将JSON格式字符串恢复为原始数据的过程。
PHP 实现解码的方式是通过内置的 json_decode 方法,但默认情况下 json_decode 会将字典恢复为 stdClass 对象而不是数组字段。 如果要将stdClass转换为数组字段,则需要进行特殊处理。
$jsonData = "{"id":35,"name":"鬼谷子叔叔","url":"https://tongfu.net/home/35.html"}";
$orgData = json_decode($jsonData);
echo "直接还原
";
var_dump($orgData);
$orgData = json_decode($jsonData, true);
echo "还原stdClass转array
";
var_dump($orgData);
六、总结
明天,付哥将带着孩子们系统讲解用PHP操作JSON格式数据的方法。 相信大家应该都明白了吧! 一旦你可以操作JSON格式的数据,你就可以使用PHP来开发程序接口,也可以使用PHP来开发前后端分离的项目。
下一课,福哥将为大家讲解如何在Python中操作JSON格式数据,敬请期待~~