jsondecode(jsondecodererror什么意思)

本篇文章给大家谈谈jsondecode,以及jsondecodererror什么意思对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

json_decode 空白 php

注意:This function only works with UTF-8 encoded data.

该函数只支持乎晌裂utf-8的数据

json_decode返回值(原文):

Returns the value encoded in json in appropriate PHP type. Values true, false and null (case-insensitive) are returned as TRUE, FALSE and NULL respectively. NULL is returned if the json cannot be decoded or if the encoded data is deeper than the recursion limit.

翻译:

将true转为TRUE,false转为FALSE,null为NULL

如果谨喊json不能被解码或者编码的数据太深(默认是512),返回null

有问题岁闭请先看文档

PHP json_decode(); 为什么没输出

我们知道网络api并不是百分百可靠,当遇到网络不稳定,接口出错等各种因素,并不一定返回标准的json数据,例如:

//如果从网络api抓取失败尺嫌山,返回的response为错误信息

$response = 'request timeout';

//json_decode之后返回NULL,你打印之后仍然没有输出,所以你采纳的那个答案仍然也帮不到你

print_r(json_decode($response, true));

//使用var_dump打印虽然可以看到NULL值,可是这并没有任何用处

var_dump(json_decode($response, true));

系统函数json_decode()在解析非json字符串返回NULL,解析乱码的json也返回NULL,你压根都不知道到底是哪里出了问题,因为NULL该返回值是不能通过print_r打印出来的,而官方php手册给了一些捕获异常信息的方法已经封装在下面的函数中了:

?php

/**

 * json解析接口,优化json_decode对数组的解析

 * @param   string      $json_code json字符串

 * @return  mix         错误信息或者数组

 */

function _json_decode($json_code)

{

    $json_arr = json_decode($json_code ,true);

    switch (json_last_error()){

        case JSON_ERROR_NONE:

            $error = '';

        break;

        case JSON_ERROR_DEPTH:

       者裂     $error = ' - Maximum stack depth exceeded';

        break;

        case JSON_ERROR_STATE_MISMATCH:

            $error = ' - Underflow or the modes mismatch';

        break;

        case JSON_ERROR_CTRL_CHAR:

            $error = ' - Unexpected control character found';

        break;

       陵中 case JSON_ERROR_SYNTAX:

            $error = ' - Syntax error, malformed JSON';

        break;

        case JSON_ERROR_UTF8:

            $error = ' - Malformed UTF-8 characters, possibly incorrectly encoded';

        break;

        default:

            $error = ' - Unknown error';

        break;

    }

    if($error)

    {

        return $error.':'.$json_code;

    }else{

        return $json_arr;

    }

}

header('Content-type:text/html;charset=utf-8');

$json = 'this is not a json code';

$arr = _json_decode($json);

if(is_array($arr))

{

    //解析正确,逻辑代码部分

    print_r($arr);

}else{

    //请求超时, 一般都会有异常处理机制, 例如重新发起请求

if($result == 'request timeout') {

//发起请求

}else{

//如果没有异常处理机制,抛出异常给上一层处理

throw new Exception($result);

}

}

使用_json_decode的返回值如果是字符串,说明在解析json数据时遇到了错误,只要添加适当处理机制,可以大大提高代码的稳固性。

如果返回值是数组,这时便可以使用print_r打印出来。

json_decode忽略错误

解决方法如下

on_last_error ― 返回最后发生的错误,如氏缺果有,裤核咐返回 JSON 编码解码时最后发生的错误。

int json_last_error ( void )

常量 含义 可用性

JSON_ERROR_NONE 没有错误发生

JSON_ERROR_DEPTH 到达了最大堆栈深度

JSON_ERROR_STATE_MISMATCH 无效或异常的 JSON

JSON_ERROR_CTRL_CHAR 控制字符错误,可能是编码不对

JSON_ERROR_SYNTAX 语法错误

JSON_ERROR_UTF8 异常的 UTF-8 字符,也许是因为不正确的编码。 PHP 5.3.3

JSON_ERROR_RECURSION One or more recursive references in the value to be encoded PHP 5.5.0

JSON_ERROR_INF_OR_NAN One or more NAN or INF values in the value to be encoded PHP 5.5.0

JSON_ERROR_UNSUPPORTED_TYPE 指定的类型,值无法编码。 PHP 5.5.0

JSON_ERROR_INVALID_PROPERTY_NAME 指定的属性名无法编码。 PHP 7.0.0

JSON_ERROR_UTF16 畸形的 UTF-16 字符,可能因为字符编码不正确。 PHP 7.0.0

?php // 一个有效的胡纯 json 字符串 $json[] = '{"Organization": "PHP Documentation Team"}'; // 一个无效的 json 字符串会导致一个语法错误,在这个例子里我们使用 ' 代替了 " 作为引号 $json[] = "{'Organization': 'PHP Documentation Team'}"; foreach ($json as $string) { echo 'Decoding: ' . $string; json_decode($string); switch (json_last_error()) { case JSON_ERROR_NONE: echo ' - No errors'; break; case JSON_ERROR_DEPTH: echo ' - Maximum stack depth exceeded'; break; case JSON_ERROR_STATE_MISMATCH: echo ' - Underflow or the modes mismatch'; break; case JSON_ERROR_CTRL_CHAR: echo ' - Unexpected control character found'; break; case JSON_ERROR_SYNTAX: echo ' - Syntax error, malformed JSON'; break; case JSON_ERROR_UTF8: echo ' - Malformed UTF-8 characters, possibly incorrectly encoded'; break; default: echo ' - Unknown error'; break; } echo PHP_EOL; }

[img]

关于jsondecode和jsondecodererror什么意思的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

相关阅读

  • mssqlserver(mssqlserver怎么安装)

    mssqlserver(mssqlserver怎么安装)

    简介:MSSQL Server是由微软公司开发的一种关系型数据库管理系统,是在Windows操作系统上运行的数据库服务器。它旨在提供可靠性、高性能和安全性,被广泛应用于企业级应用程序和网站开发中。多级标题:一、MSSQL Server的特点...

    2024.04.22 22:38:00作者:intanet.cnTags:mssqlserver
  • js转json(js转json在线)

    js转json(js转json在线)

    **简介**在IT技术领域中,JavaScript(简称JS)是一种常用的脚本语言,用于网页开发和编程。JSON(JavaScript Object Notation)则是一种轻量级的数据交换格式,常用于存储和传输数据。本文将讨论如何将Ja...

    2024.04.22 22:23:30作者:intanet.cnTags:js转json
  • 数据库有那些(数据库有哪些索引)

    数据库有那些(数据库有哪些索引)

    一、简介数据库是计算机中用于存储和管理数据的系统,是信息系统中最重要的组成部分之一。数据库技术在信息化时代发挥着重要作用,广泛应用于各行各业。数据库的种类有很多,每种都有其特点和适用场景。下面将介绍一些常见的数据库类型。二、关系数据库1....

    2024.04.22 22:14:00作者:intanet.cnTags:数据库有那些
  • 关于sparksqlsplit的信息

    关于sparksqlsplit的信息

    简介:作为一种基于内存的分布式数据处理框架,Spark SQL使得数据分析更加高效和灵活。而在Spark SQL中,split函数是非常常用的函数,用于将字符串通过指定的分隔符进行拆分。本文将详细介绍sparksqlsplit函数的用法和示...

    2024.04.22 22:13:30作者:intanet.cnTags:sparksqlsplit
  • 数据的处理方法(实验数据的处理方法)

    数据的处理方法(实验数据的处理方法)

    在当今数字化时代,数据处理变得越发重要。从企业管理到科研领域,人们需要处理大量的数据以获取有价值的信息。本文将介绍一些常见的数据处理方法,帮助读者更好地理解和应用数据处理技术。# 传统数据处理方法传统数据处理方法主要包括数据录入、数据清洗、...

    2024.04.22 22:09:30作者:intanet.cnTags:数据的处理方法
  • mongodb和hbase(mongodb和hbase性能)

    mongodb和hbase(mongodb和hbase性能)

    MongoDB和HBase是两种流行的NoSQL数据库系统,它们在处理大规模数据和高并发访问方面都有很好的表现。本文将对MongoDB和HBase进行比较和分析,以帮助读者了解它们各自的优缺点和适用场景。# 一、MongoDB介绍Mongo...

    2024.04.22 22:00:00作者:intanet.cnTags:mongodb和hbase
  • mysql转sqlserver(MySQL转sqlserver数据库)

    mysql转sqlserver(MySQL转sqlserver数据库)

    **简介**将MySQL数据库转移到SQL Server数据库是常见的需求,因为有时候企业需要更稳定、更强大的数据库管理系统来满足数据需求。在本文中,我们将详细讨论如何将MySQL数据库成功转移到SQL Server数据库。**准备工作**...

    2024.04.22 21:45:30作者:intanet.cnTags:mysql转sqlserver
  • 数据库的建立(数据库的建立与维护实验心得)

    数据库的建立(数据库的建立与维护实验心得)

    标题:数据库的建立简介:数据库是指在计算机系统中,用于存储和管理数据的系统。在IT技术领域,数据库起着至关重要的作用,它可以帮助我们更好地组织和管理数据,提高数据的访问效率和安全性。下面将详细介绍数据库的建立过程和相关知识。一、数据库类型1...

    2024.04.22 21:30:00作者:intanet.cnTags:数据库的建立