php 字符是否在json中,检查字符串是否是PHP中的JSON的最快方法?

回答问题

该函数json_last_error返回JSON编码和解码期间发生的最后一个错误。因此,检查有效JSON的最快方法是

// decode the JSON data

// set second parameter boolean TRUE for associative array output.

$result = json_decode($json);

if (json_last_error() === JSON_ERROR_NONE) {

// JSON is valid

}

// OR this is equivalent

if (json_last_error() === 0) {

// JSON is valid

}

请注意,json_last_errorPHP> = 5.3.0仅支持。

完整的程序来检查确切的错误

在开发期间知道确切的错误总是好的。这是完整的程序,以检查基于PHP文档的确切错误。

function json_validate($string)

{

// decode the JSON data

$result = json_decode($string);

// switch and check possible JSON errors

switch (json_last_error()) {

case JSON_ERROR_NONE:

$error = ''; // JSON is valid // No error has occurred

break;

case JSON_ERROR_DEPTH:

$error = 'The maximum stack depth has been exceeded.';

break;

case JSON_ERROR_STATE_MISMATCH:

$error = 'Invalid or malformed JSON.';

break;

case JSON_ERROR_CTRL_CHAR:

$error = 'Control character error, possibly incorrectly encoded.';

break;

case JSON_ERROR_SYNTAX:

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

break;

// PHP >= 5.3.3

case JSON_ERROR_UTF8:

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

break;

// PHP >= 5.5.0

case JSON_ERROR_RECURSION:

$error = 'One or more recursive references in the value to be encoded.';

break;

// PHP >= 5.5.0

case JSON_ERROR_INF_OR_NAN:

$error = 'One or more NAN or INF values in the value to be encoded.';

break;

case JSON_ERROR_UNSUPPORTED_TYPE:

$error = 'A value of a type that cannot be encoded was given.';

break;

default:

$error = 'Unknown JSON error occured.';

break;

}

if ($error !== '') {

// throw the Exception or exit // or whatever :)

exit($error);

}

// everything is OK

return $result;

}

使用有效的JSON INPUT进行测试

$json = '[{"user_id":13,"username":"stack"},{"user_id":14,"username":"over"}]';

$output = json_validate($json);

print_r($output);

有效的输出

Array

(

[0] => stdClass Object

(

[user_id] => 13

[username] => stack

)

[1] => stdClass Object

(

[user_id] => 14

[username] => over

)

)

使用无效的JSON进行测试

$json = '{background-color:yellow;color:#000;padding:10px;width:650px;}';

$output = json_validate($json);

print_r($output);

无效的输出

Syntax error, malformed JSON.

额外注意事项(PHP> = 5.2 && PHP <5.3.0)

由于json_last_errorPHP 5.2不支持,您可以检查编码或解码是否返回布尔值FALSE。这是一个例子

// decode the JSON data

$result = json_decode($json);

if ($result === FALSE) {

// JSON is invalid

}

希望这是有帮助的。快乐的编码!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值