在Web开发中,经常会涉及到从前端页面提交JSON格式的数据到后端,然后需要将这些数据转化为PHP可以操作的数组或对象形式。本文将介绍如何使用PHP将JSON数据转化为数组对象。
JSON是一种轻量级的数据交换格式,具有结构清晰、易于读写等特点。PHP内置JSON处理函数,可以很方便地将JSON转化为数组或对象形式。
假设我们有如下JSON数据:
1
2
3
4
5
6
7
8
9
10
11
12
{
“name”: “Tom”,
“age”: 20,
“address”: {
“province”: “Guangdong”,
“city”: “Guangzhou”
},
“hobbies”: [
“reading”,
“swimming”
]
}
使用PHP的json_decode()函数可以将其转化为数组对象。函数的用法如下:
1
array|object json_decode(string $json[, bool $assoc = false[, int $depth = 512[, int $options = 0]]])
参数说明:
$json:需要解码的JSON字符串。$assoc(可选):当该参数为真时,将返回数组形式,为假时返回对象形式。默认为假。$depth(可选):设置解析JSON数据的最大深度。默认为512,超出范围将返回null。$options(可选):设置JSON解码器的选项,如JSON_BIGINT_AS_STRING可以将大整数视为字符串返回。代码示例:
1
2
3
4
5
$jsonStr = { “name”: “Tom”, “age”: 20, “address”: { “province”: “Guangdong”, “city”: “Guangzhou” }, “hobbies”: [ “reading”, “swimming” ] };
$array = json_decode($jsonStr, true);
print_r($array);
输出结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Array
(
[name] => Tom
[age] => 20
[address] => Array
(
[province] => Guangdong
[city] => Guangzhou
)
[hobbies] => Array
(
[0] => reading
[1] => swimming
)
)
可以看到,json_decode()函数将JSON字符串转化为了PHP数组对象。
如果要将JSON数据转化为PHP对象形式,可以去掉函数中的第二个参数或将其设置为false。
除了将JSON数据转化为数组或对象形式,PHP还可以将数组或对象形式的数据编码为JSON字符串。这可以使用PHP的json_encode()函数实现。函数用法如下:
1
string json_encode(mixed $value[, int $options = 0[, int $depth = 512]])
参数说明:
$value:需要编码为JSON字符串的值。$options(可选):设置JSON编码器的选项,如JSON_PRETTY_PRINT可以使编码后的JSON字符串更易于阅读。$depth(可选):设置编码JSON数据的最大深度。默认为512,超出范围将返回空字符串。代码示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$array = array(
name => Tom,
age => 20,
address => array(
province => Guangdong,
city => Guangzhou
),
hobbies => array(
reading,
swimming
)
);
$jsonStr = json_encode($array, JSON_PRETTY_PRINT);
echo $jsonStr;
输出结果:
1
2
3
4
5
6
7
8
9
10
11
12
{
“name”: “Tom”,
“age”: 20,
“address”: {
“province”: “Guangdong”,
“city”: “Guangzhou”
},
“hobbies”: [
“reading”,
“swimming”
]
}
在实际开发中,经常会使用AJAX技术向后端服务器提交JSON数据,然后通过PHP将其转化为可操作的形式。掌握以上JSON相关的PHP函数,能够更加方便地处理JSON数据。
以上就是php 将json转成数组对象的详细内容,更多请关注php中文网其它相关文章!
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布投稿,分享有佣金分成!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务 请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长,可领回失去的金币,并额外有奖!
6. 如遇到加密压缩包,默认解压密码为"www.77ym.top",如遇到无法解压的请联系管理员!
7. 本站部分文章、资源来自互联网,版权归原作者及网站所有,如果侵犯了您的权利,请及时联系我站删除。免责声明
暂无评论内容