返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP json_decode()函数详解
  • 368
分享到

PHP json_decode()函数详解

aiphp安全 2023-08-31 06:08:27 368人浏览 独家记忆
摘要

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

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

JSON_decode

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

语法

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

参数

  • $json_str :需要解码的JSON字符串,只能处理UTF-8编码的数据
  • assoc :布尔类型,true返回数组,(默认)false返回对象
  • depth :整数类型,递归的深度(默认512层),最大 2147483647 层
  • options :二进制掩码,目前只支持 JSON_BIGINT_AS_STRING

返回值

  • 通过恰当的类型,返回解码后的数据,默认返回对象类型。
  • JSON格式错误 或 超过递归解析深度 或 false 或 null,就返回null。

一、返回数组类型

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的键和值必须用双引号

「解析」的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,使其在解析错误时抛出异常,方便我们及时处理错误。


三、返回null问题

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

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

实例:

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

输出:

NULL4

json_last_error() 返回值解析:

  • 0 = JSON_ERROR_NONE //没有错误
  • 1 = JSON_ERROR_DEPTH //超过最大堆栈深度
  • 2 = JSON_ERROR_STATE_MISMATCH //无效或异常的json
  • 3 = JSON_ERROR_CTRL_CHAR //控制字符错误,可能是编码不对
  • 4 = JSON_ERROR_SYNTAX //JSON字符串语法错误
  • 5 = JSON_ERROR_UTF8 //异常的UTF-8字符,只能处理UTF8编码的数据

四、大整数问题

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


五、传入非字符串类型

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

  • 数值型会原样返回
  • 运算符会运算后返回运算结果
  • 布尔型(true返回1,false返回NULL)
  • null会返回NULL

实例:

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

--结束END--

本文标题: PHP json_decode()函数详解

本文链接: https://lsjlt.com/news/384322.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PHP json_decode()函数详解
    「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 ...
    99+
    2023-08-31
    ai php 安全
  • PHP函数介绍:json_decode()函数
    PHP函数介绍:json_decode()函数在现今的Web开发中,数据传输和交互是非常常见的操作。常常使用JSON格式进行数据的序列化和反序列化。在PHP中,有一个非常常用的函数json_decode()来将JSON字符串解码为PHP对象...
    99+
    2023-11-04
    函数 PHP json_decode()
  • php json_decode函数怎么使用
    PHP中的json_decode函数用于将JSON格式的字符串转换为PHP对象或关联数组。基本语法:```phpmixed json...
    99+
    2023-09-26
    php
  • PHP json_decode 函数解析 json 结果为 NULL 的解决方法
    当 PHP 的 `json_decode()` 函数解析一个 JSON 字符串时,如果返回结果为 `NULL`,则通常有以下几种可能...
    99+
    2023-10-11
    php
  • PHP JSON处理函数全解析:json_encode、json_decode、json_last_error等函数的JSON数据处理技巧
    PHP JSON处理函数全解析:json_encode、json_decode、json_last_error等函数的JSON数据处理技巧,需要具体代码示例JSON(JavaScript Object Notation)是一种轻量级的数据交...
    99+
    2023-11-18
    PHP JSON 处理函数
  • php中对内置函数json_encode和json_decode的异常处理
    在php中,json_encode和json_decode是很常用的函数,具体用法可以查看相关文档,这里主要说一下错误处理。 平时我们在使用这两个方法的时候可能没怎么注意错误处理,有...
    99+
    2024-04-02
  • php json_decode解析失败怎么办
    PHP中的json_decode函数可以将一个JSON格式字符串解析为PHP中的数组或对象。但是,有时候当我们在使用json_decode函数时,会遇到解析失败的情况。本文将探讨解析失败的原因及解决方法。解析失败的原因1. JSON格式错误...
    99+
    2023-05-14
  • PHP trim函数详解
    1. 官方说明 trim(string $string, string $characters = " \n\r\t\v\x00"): string 删除字符串两边的空白字符以及预定义字符。 2. 参...
    99+
    2023-09-10
    php 开发语言
  • PHP加密函数与解密函数详解
    去网上找了下。 Php常用的加密函数有 MD5加密(不可逆)、Crypt加密(不可逆)、Sha1加密(不可逆)、Urlencode加密(可逆) base64编码加密(可逆) 还是见识...
    99+
    2022-11-13
    PHP 加密 解密函数 PHP 加密函数 PHP 解密函数
  • PHP中preg_match函数详解
    目录 函数形式函数功能参数详解patternsbujectmatches 返回值 例子 函数形式 preg_match(string $pattern, string $...
    99+
    2023-09-03
    php 前端
  • php fopen()函数案例详解
    定义和用法 fopen() 函数打开文件或者 URL。 如果打开失败,本函数返回 FALSE。 语法 fopen(filename,mode,include_path,conte...
    99+
    2024-04-02
  • php floor()函数案例详解
    floor() 函数向下舍入为最接近的整数。 语法 floor(x) 参数 描述 ...
    99+
    2024-04-02
  • PHP function_exists()函数用法详解
    函数用法详解函数用法详解函数用法详解function_exists()函数用于检查函数是否已定义。语法bool function_e...
    99+
    2023-08-24
    PHP
  • 详解各种PHP函数漏洞
    目录1.MD5 compare漏洞2.ereg函数漏洞:00截断3.变量本身的key4.变量覆盖5.strcmp6.sha1 和 md5 函数7.is_numeric8.preg_m...
    99+
    2024-04-02
  • PHP中in_array()函数用法详解
    in_array() 函数是PHP中常用的数组函数之一,用于搜索数组中是否存在指定的值。 语法 bool in_array ( mixed $needle , array $haystack [, b...
    99+
    2023-10-12
    php 开发语言
  • PHP 内置函数库的详解
    php 内置函数库包含各种函数,用于简化代码和提高开发效率,包括:类型转换函数:将数据类型从一种转换为另一种。字符串操作函数:用于处理字符串,如查找、提取和计算长度。数学函数:执行常见数...
    99+
    2024-04-14
    php 函数库
  • 使用PHP的json_decode()函数将JSON字符串转换为数组或对象并处理解析错误
    使用PHP的json_decode()函数将JSON字符串转换为数组或对象并处理解析错误在PHP开发中,经常会遇到需要将JSON字符串转换为数组或对象的情况,而PHP提供了一个非常方便的函数json_decode()来实现这个功能。不过,当...
    99+
    2023-11-03
    PHP json_decode() 解析错误处理
  • 面试必备:PHP 数组函数详解!
    PHP 数组函数是在 PHP 编程中非常重要的一部分,它们可以帮助我们在数组中进行各种操作,如添加、删除、排序、搜索等。在 PHP 开发中,数组是一个非常常用的数据结构,因此了解 PHP 数组函数是非常重要的。 下面我们来详细介绍一些常用的...
    99+
    2023-06-18
    数组 面试 函数
  • 详解PHP中数组函数的巧用
    目录前言取指定键名移除指定键名数组去重重置索引清除空值确认数组成员全部为真获取指定键名之前/之后的数组数组中重复次数最多的值前言 PHP 的数组是一种很强大的数据类型,与此同时 PH...
    99+
    2024-04-02
  • PHP is_array()函数详解,PHP判断是否为数组
    「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 ...
    99+
    2023-08-31
    人工智能 机器学习 安全
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作