在PHP语言中使用JSON和将json还原成数组的方法
需积分: 0 17 浏览量
更新于2020-10-21
收藏 58KB PDF 举报
在本文中,我们将探讨在PHP中使用JSON数据格式的方法,以及如何将JSON数据还原为数组或对象。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。PHP从5.2版本起原生支持处理JSON数据的两个重要函数:json_encode() 和 json_decode()。
一、json_encode()函数
json_encode()函数用于将PHP数组或对象编码成JSON格式的字符串。我们来看一个数组编码的例子:
```php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
```
输出将会是:
```
{"a":1,"b":2,"c":3,"d":4,"e":5}
```
数组中的每个键值对被转换成了JSON对象的属性。当编码对象时,输出形式类似:
```php
$obj = new stdClass();
$obj->body = 'anotherpost';
$obj->id = 21;
$obj->approved = true;
$obj->favorite_count = 1;
$obj->status = NULL;
echo json_encode($obj);
```
输出:
```
{
"body": "anotherpost",
"id": 21,
"approved": true,
"favorite_count": 1,
"status": null
}
```
这里,$obj对象的所有公共属性都被编码进了JSON对象中。
当处理索引数组和关联数组时,json_encode()会将索引数组转换为JSON数组格式,关联数组则转换为JSON对象格式。例如:
```php
$arr = array('one', 'two', 'three'); // 索引数组
echo json_encode($arr);
```
输出:
```
["one","two","three"]
```
而关联数组:
```php
$arr = array('1' => 'one', '2' => 'two', '3' => 'three'); // 关联数组
echo json_encode($arr);
```
输出:
```
{"1":"one","2":"two","3":"three"}
```
需要注意的是,json_encode()函数处理的参数必须是UTF-8编码的字符。如果参数使用了中文的GB2312编码或外文的ISO-8859-1编码,会出现错误或返回null值。若要处理这些编码的字符串,需要先将其转换为UTF-8编码。
此外,json_encode()默认只将索引数组转换为数组格式,关联数组转换为对象格式。如果需要将关联数组转换为JSON对象,可以通过设置JSON_FORCE_OBJECT选项实现。
二、类(class)的转换
json_encode()也可以处理PHP类的对象。类的私有属性(private)和受保护的属性(protected)不会被编码,只有公共属性(public)会被包含在JSON对象中。例如:
```php
class Foo {
const ERROR_CODE = '404';
public $public_ex = 'this is public';
private $private_ex = 'this is private!';
protected $protected_ex = 'this should be protected';
public function getErrorCode() {
return self::ERROR_CODE;
}
}
$foo = new Foo;
$foo_json = json_encode($foo);
echo $foo_json;
```
输出结果为:
```
{"public_ex":"this is public"}
```
只有public属性会被编码进JSON。
三、json_decode()函数
json_decode()函数用于将JSON格式的字符串解码成PHP数组或对象。默认情况下,json_decode()将JSON字符串解码成PHP对象,但可以通过设置第二个参数为true将结果转换为数组。例如:
```php
$json = '{"foo":12345}';
$obj = json_decode($json);
echo $obj->{'foo'}; // 输出12345
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
```
输出结果为:
```
object(stdClass)#1(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
```
若想要结果为关联数组:
```php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json, true));
```
输出结果为关联数组:
```
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
```
当需要强制将JSON解码为关联数组时,可以使用json_decode()的第二个参数设置为true。
在使用json_decode()时,如果JSON字符串格式不正确,函数可能返回null。因此在处理返回的数据前应该进行null值的检查。
json_encode() 和 json_decode() 是在PHP中处理JSON数据的核心函数。通过这两个函数,PHP开发者可以轻松地在JSON数据和PHP数组或对象之间进行转换,从而实现数据的格式化传输和处理。在实际开发中,正确地使用这两个函数能有效地帮助我们构建前后端分离的现代Web应用。
weixin_38591615
- 粉丝: 8
- 资源: 907
最新资源
- 白色大气风格的珠宝首饰电商模板下载.zip
- 白色大气风格的装饰装修模板下载.zip
- 白色大气风格的自行车运动模板下载.zip
- 白色大气风格的自由搏击俱乐部模板下载.zip
- 白色大气风格响应式app应用程序企业网站模板.zip
- 白色大气风格的足球俱乐部HTML5网站模板.zip
- 白色大气风格响应式IT技术在线企业网站模板.zip
- 白色大气风格响应式彩绘精品水果网站模板.zip
- 白色大气风格响应式大图幻灯博客网站模板.zip
- 白色大气风格响应式产品展示企业网页模板.zip
- 白色大气风格响应式个人主页博客网站模板.zip
- 白色大气风格响应式浪漫集体婚礼企业网站模板.zip
- 白色大气风格响应式果蔬类种植企业网站模板.zip
- 白色大气风格响应式通用后台管理网站模板.zip
- 白色大气风格响应式项目团队动态企业网站模板.zip
- 白色大气风格响应式旅游资讯企业网站模板.zip