浅析PHP中json_encode与json_decode的区别
在PHP中,json_encode与json_decode这两个函数都是用于处理JSON格式数据的函数,它们的功能分别是将PHP数据编码为JSON数据,以及将JSON数据解码为PHP数据,但是在使用中还是有一些细微的差别,下面就来进行一下详细讲解。
json_encode函数
json_encode函数用于将PHP数据编码为JSON数据。它有两个参数:要编码的数据和一个可选的参数,用于设置编码选项。在默认情况下,json_encode函数会返回一个UTF-8编码的JSON字符串。
示例1:
$data = array(
'name' => 'John',
'age' => 30,
'isMarried' => true,
'hobby' => array('reading', 'writing', 'traveling')
);
$json = json_encode($data);
echo $json;
执行以上代码,将会输出以下JSON字符串:
{
"name": "John",
"age": 30,
"isMarried": true,
"hobby": [
"reading",
"writing",
"traveling"
]
}
示例2:
$data = array(
'name' => '<script>alert("XSS attack!");</script>',
'age' => 30,
'isMarried' => true,
'hobby' => array('reading', 'writing', 'traveling')
);
$json = json_encode($data);
echo $json;
执行以上代码,将会输出以下JSON字符串:
{
"name": "\u003Cscript\u003Ealert(\"XSS attack!\");\u003C\/script\u003E",
"age": 30,
"isMarried": true,
"hobby": [
"reading",
"writing",
"traveling"
]
}
可以看到,在示例2中,由于$data数组中的$name键值包含了一个XSS攻击的代码,json_encode函数对其进行了转义,将"<"、">"、"\""等字符转换成了Unicode编码,保证输出的JSON字符串是安全的。
json_decode函数
json_decode函数用于将JSON数据解码为PHP数据。它有两个参数:要解码的JSON字符串和一个可选的参数,用于设置解码选项。在默认情况下,json_decode函数会返回一个stdClass对象或一个数字索引数组。
示例1:
$json = '{"name":"John","age":30,"isMarried":true,"hobby":["reading","writing","traveling"]}';
$data = json_decode($json);
var_dump($data);
执行以上代码,将会输出以下PHP数据:
object(stdClass)#1 (4) {
["name"]=>
string(4) "John"
["age"]=>
int(30)
["isMarried"]=>
bool(true)
["hobby"]=>
array(3) {
[0]=>
string(7) "reading"
[1]=>
string(7) "writing"
[2]=>
string(9) "traveling"
}
}
可以看到,json_decode函数将JSON字符串解码为一个stdClass对象,对象的属性名对应JSON键名,对象的属性值对应JSON键值。
示例2:
$json = '{"name":"\u003Cscript\u003Ealert(\"XSS attack!\");\u003C\/script\u003E","age":30,"isMarried":true,"hobby":["reading","writing","traveling"]}';
$data = json_decode($json);
var_dump($data);
执行以上代码,将会输出以下PHP数据:
object(stdClass)#1 (4) {
["name"]=>
string(35) "<script>alert("XSS attack!");</script>"
["age"]=>
int(30)
["isMarried"]=>
bool(true)
["hobby"]=>
array(3) {
[0]=>
string(7) "reading"
[1]=>
string(7) "writing"
[2]=>
string(9) "traveling"
}
}
可以看到,json_decode函数将JSON字符串解码为一个stdClass对象,并将其中的Unicode编码字符转换为可读的字符串。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅析PHP中json_encode与json_decode的区别 - Python技术站