文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

PHP json_decode()函数详解

2023-08-31 06:18

关注

「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》

json_decode

json_decode() 可以对JSON字符串「解码」,并转换为PHP变量。

语法

mixed json_decoce( $json_str, assoc, depth, options )

参数

返回值

json_decode() 默认返回「对象」类型,如果想返回「数组」类型,就将 assoc 参数设置为true。 assoc 参数可省略,默认为false。

实例:

var_dump(json_decode('{"key1":"value1","key2":"value2"}'));var_dump(json_decode('{"key1":"value1","key2":"value2"}', true));

输出:

object(stdClass)#1 (2) {  ["key1"]=>  string(6) "value1"  ["key2"]=>  string(6) "value2"}array(2) {  ["key1"]=>  string(6) "value1"  ["key2"]=>  string(6) "value2"}

options 参数设置为 JSON_OBJECT_AS_ARRAY 时,也可以转换成「数组」类型。

实例:

var_dump(json_decode('{"key1":"value1","key2":"value2"}', JSON_OBJECT_AS_ARRAY));

输出:

array(2) {  ["key1"]=>  string(6) "value1"  ["key2"]=>  string(6) "value2"}

「解析」的JSON字符串,最外侧用单引号包裹,里面的键值对用「双引号」包裹,才能正常解析,否则会返回null。

实例:

var_dump(json_decode('{"key1":"value1","key2":"value2"}'));var_dump(json_decode("{'key1':'value1','key2':'value2'}"));

输出:

object(stdClass)#1 (2) {  ["key1"]=>  string(6) "value1"  ["key2"]=>  string(6) "value2"}NULL

这时,(PHP 7.3以上)可以设置参数 options 为JSON_THROW_ON_ERROR,使其在解析错误时抛出异常,方便我们及时处理错误。


除了刚才提到的JSON字符串格式错误会返回null,还有其他的原因。

遇到返回null的问题时,可以在 json_decode() 后面,打印 json_last_error() 查看错误。

实例:

var_dump(json_decode("{'key1':'value1','key2':'value2'}"));echo json_last_error();

输出:

NULL4

json_last_error() 返回值解析:


options 参数设置为 JSON_BIGINT_AS_STRING,可以将超过PHP整型「最大值」的整数解析为字符串。


如果传入的不是字符串类型,就不会解码,或者说「无法解码」

实例:

var_dump(json_decode(10));var_dump(json_decode(10.11));var_dump(json_decode(1*2));var_dump(json_decode(true));var_dump(json_decode(false));var_dump(json_decode(null));

输出:

int(10)float(10.11)int(2)int(1)NULLNULL

解码后进行「强制类型转换」

实例:

var_dump((array)json_decode(10));var_dump((int)json_decode(false));

输出:

array(1) {  [0]=>  int(10)}int(0)

来源地址:https://blog.csdn.net/wangyuxiang946/article/details/131338818

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯