php中json_decode函数使用方法的而详细介绍
内容导读
收集整理的这篇技术教程文章主要介绍了php中json_decode函数使用方法的而详细介绍,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2131字,纯文字阅读大概需要4分钟。
内容图文
本篇文章给大家带来的内容是关于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());}
以上就是php中json_decode函数使用方法的而详细介绍的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是为您收集整理的php中json_decode函数使用方法的而详细介绍全部内容,希望文章能够帮你解决php中json_decode函数使用方法的而详细介绍所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 lecms, classcms, fastadmin, pbootcms, phpcms, eyoucms, yzmcms, PHP, xunruicms, jizhicms, dedecms, wordpress, hkcms, yzncms, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。