json经常用于接口向外传递数据,而php最重要的一个用法就是作为数据接口向外传递数据;因此了解php对json数据的操作很重要;
json简介
- json是javascript对象;
- 是一种数据格式;
- 通常用于传递数据,常见用于接口传递数据;
- 结构简单,解析方便,传递速度要比xml块很多;
- json是一种纯文本格式;
- json只能使用utf-8格式的编码,其他编码是不支持的;
php对json操作之json_encode();
json_encode():作用是将数组或者对象转换为json的数据格式;
下面详解:
1:将数组封装为json格式:
$json = json_encode($array);
比如:
phpjson.php
<?php
$arr = array(
"name" => "tom",
"age" =>22,
);
echo json_encode($arr);
运行一下就可以看到将数组转换为了json格式的数据:
2:将对象转换为json格式:
$json = json_encode($obj);
实例:
<?php
class PhpJson{
public $name = "lili";
public $age = 18;
}
$obj = new PhpJson;
echo json_encode($obj);
执行一下:
3:将索引数组强制转换为json:
$json = json_encode(object($arr));
实例:
<?php
$arr = array(1,2,3,4);
echo json_encode((object)$arr);
执行一下:
可以看到强制转换索引数组的时候会吧数组的下标当做key进行转换;
4:构造json字符串
<?php
$json = "{'name':'kedr','age':30}";
echo $json;
注意外面的引号和里面key的引号不能冲突了;
php解析json数据之json_decode()
json_decode():解析json数据格式,解析为数组或者对象,默认状态下解析为对象;
1:解析为数组:
$array = json_decode($json,true); //将会解析成数组;
<?php
//先创建一个json对象
class PhpJson{
public $name = "lili";
public $age = 18;
}
$obj = new PhpJson;
$json = json_encode($obj);
//在此处打印解析之后的结果,把第二个参数设置为true;则会解析成数组;
print_r(json_decode($json,true));
执行结果:
可以看到json数据被解析为数组;
2:解析为对象;
$obj = json_decode($json); //默认将会解析成对象;
<?php
//先创建一个json对象
class PhpJson{
public $name = "lili";
public $age = 18;
}
$obj = new PhpJson;
$json = json_encode($obj);
//此时打印解析之后的结果,第二个参数是false或者不设置,则解析为对象
print_r(json_decode($json));
执行结果:
可以看到打印的数据类型是object;
php向外提供json数据
php向外提供数据的方式:
php向外提供json数据只需要把转换好得json数据echo
一下即可;
php向外传递json数据一次只能传递一个json数据;
所以php需要通过json格式向外传递多个数据的时候必须将所有数据封装在一个json对象中传递;