当前位置:   article > 正文

PHP函数json_decode的用法,php中json_decode函数使用方法的而详细介绍

phpjson_decode

本篇文章给大家带来的内容是关于php中json_decode函数使用方法的而详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

我们都知道使用 json_decode 函数可以用来对 JSON 格式的字符串进行解码。我们常用的形式如下:<?php

$json = 'some_json_data';

$result = json_decode($json, true);

实际上 json_decode() 函数拥有多个参数,根据传入的参数的不同,函数的行为也将不同。

解码的数据

你可能见到过 json_decode() 函数报下面的错误:Warning: json_decode() expects parameter 1 to be string, xxx given in

根据报错信息来看,第一个参数必须为 string 类型,但是,实际上第一个参数可以是下面的三种类型:string

null

bool

根据参数的类型的不同,函数的返回值也将发生变化。

返回值

json_decode() 函数默认在解析 JSON 数据正确地情况下会返回一个对象。

但是第二个参数传入 true 后或者第四个参数传入 JSON_OBJECT_AS_ARRAY 后,函数将在解析 JSON 数据正确地情况下返回数组而不是对象。

请注意我加黑的文字,json_decode() 函数在解析 JSON 数据正确地情况下返回对象或者数组,但是一些情况下函数将返回其它数据:string 类型并且是正确的 JSON 格式的数据,解码后返回对象或数组

从 PHP 5.6 开始,JSON 数据中存在 true,false 和 null,如果不采用小写格式,将会解码失败,返回 null

string 类型的 'true'、'false'、'null' 返回其本身(全部为小写情况下)

其它的 string 类型的参数返回 null

true / false / null 直接返回 null

其它类型的数据直接报错

第三个参数递归深度为 1 的时候,直接返回 null

所以我们在使用 foreach 对解码后的数据进行迭代时,需要留意解码后的数据是否为数组,如果不是,那么在迭代时会报错。

可以去 JSON 官方网站去了解什么样的数据才是 JSON 格式的数据,

递归深度

第三个参数表示递归深度,深度必须大于 0,否则报错。当递归深度为 1 时结果为 null,所以递归深度最小值为 2。

解码选项

第四个参数用于设置选项:JSON_PRETTY_PRINT 会填充一些空白字符进去,方便查看

JSON_UNESCAPED_SLASHES 不要编码 /

JSON_UNESCAPED_UNICODE 不要编码 unicode 字符, 默认是编码成 \uXXXX

处理错误

我们也可以结合 json_last_error 函数、json_last_error_msg(PHP >= 5.5) 函数与 @ 操作符一起使用:<?php

$json = 'some_json_data';

$result = @json_decode((string)$json, true);

if (json_last_error() !== JSON_ERROR_NONE) {

throw new Exception(json_last_error_msg());

}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/146981
推荐阅读
相关标签
  

闽ICP备14008679号