PHP8.3的json_validate函数怎么使用


本文小编为大家详细介绍“PHP8.3的json_validate函数怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“PHP8.3的json_validate函数怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 PHP 8.3 前瞻:`json_validate` 函数PHP 8.3 将会添加名为 json_validate 的函数,用于验证传入的字符串是否是合法的 JSON 字符串。在目前,验证 JSON 字符串的一种通用做法是尝试将其解码,并通过捕获异常来确定。但某些情况下我们可能并不需要获得具体的内容,只需要验证其合法。新的 json_validate 函免费云主机域名数相比 json_decode 耗用的内存和资源更少,因为它只分析字符串而不会尝试解码。函数签名

/**
*验证传入的字符串是否为合法JSON字符串
*
*@paramstring$json准备验证的字符串
*@paramint$depth最大嵌套深度,必须大于0
*@paramint$flags标志掩码,用于指定行为
*@returnbool$json是合法JSON字符串时返回true,否则返回false
*/
functionjson_validate(string$json,int$depth=512,int$flags=0):bool{}

标志 Flagsjson_validate 的第三个参数是 flags,用于指定函数的行为。在目前,唯一可用的标志是 JSON_INVALID_UTF8_IGNORE。该标志在 PHP 7.2 中添加,作为 json_decode 的标志常量,用于忽略对应字符串中的 UTF-8 字符。

json_validate('[1,2,3]',flags:JSON_INVALID_UTF8_IGNORE);//true

json_validate("["xc1xc1","a"]");//false
json_validate("["xc1xc1","a"]",flags:JSON_INVALID_UTF8_IGNORE);//true

错误处理json_validate 本身并不会返回错误码,如果你想要获取具体的错误信息,可用使用 json_last_error 和 json_last_error_msg 获取。

json_validate("");//false

json_last_error();//4
json_last_error_msg();//"Syntaxerror"

json_validate("null");//true

json_last_error();//0
json_last_error_msg();//"Noerror"

示例验证字符串并抛出异常

if(json_validate($_GET['json'])===false){
thrownewJsonException(json_last_error_msg(),json_last_error());
}

替代以前的验证方式

-$value=json_decode($_GET['json'],flags:JSON_THROW_ON_ERROR);
+if(!json_validate($_GET['json'])){
+thrownewJsonException(json_last_error_msg(),json_last_error());
+}
+$value=json_decode($_GET['json']);

Polyfill 抢先适配如果你想提前为 PHP 8.3 做适配,以在 8.3 发布的第一时间无缝切换到 json_validate,你可以手动定义一个函数,以在之前的版本中模仿 json_validate 的作用。

if(!function_exists('json_validate')){
functionjson_validate(string$json,int$depth=512,int$flags=0):bool{
if($flags!==0&&$flags!==JSON_INVALID_UTF8_IGNORE){
thrownewValueError('json_validate():Argument#3($flags)mustbeavalidflag(allowedflags:JSON_INVALID_UTF8_IGNORE)');
}
if($depth

由于此函数内部依然使用 json_decode,所以其实际上并没有性能上的改进,只是提供了和 json_validate 相似的接口。读到这里,这篇“PHP8.3的json_validate函数怎么使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注百云主机行业资讯频道。

相关推荐: Python urllib如何使用

本篇内容介绍了“Pythonurllib如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!urllib 库,它是 Python 内置的 HTTP 请求库,不…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 03/07 16:23
Next 03/07 16:23

相关推荐