如何判断一个字符串是否是有效的JSON?
有谁知道 PHP 的强大(且防弹) is_JSON 函数片段? 我(显然)有一种情况,我需要知道字符串是否是 JSON。
嗯,也许通过 JSONLint 请求/响应来运行它,但这似乎有点矫枉过正。
Does anyone know of a robust (and bullet proof) is_JSON function snippet for PHP? I (obviously) have a situation where I need to know if a string is JSON or not.
Hmm, perhaps run it through a JSONLint request/response, but that seems a bit overkill.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
如果您使用内置的
json_decode
PHP 函数,json_last_error
返回最后一个错误(例如JSON_ERROR_SYNTAX
(当您的字符串不是 JSON 时)。通常
json_decode
返回null< /代码> 无论如何。
If you are using the built in
json_decode
PHP function,json_last_error
returns the last error (e.g.JSON_ERROR_SYNTAX
when your string wasn't JSON).Usually
json_decode
returnsnull
anyway.对于我的项目,我使用此函数(请阅读 json_decode() 文档)。
传递与传递给 json_decode() 相同的参数,您可以检测特定的应用程序“错误”(例如深度错误)
使用 PHP >= 5.6
使用 PHP >= 5.3
用法示例:
For my projects I use this function (please read the "Note" on the json_decode() docs).
Passing the same arguments you would pass to json_decode() you can detect specific application "errors" (e.g. depth errors)
With PHP >= 5.6
With PHP >= 5.3
Usage example:
使用
json_decode
怎么样,如果给定的字符串不是有效的 JSON 编码数据?请参阅手册页上的示例 3:
What about using
json_decode
, which should returnnull
if the given string was not valid JSON-encoded data ?See example 3 on the manual page :
带有
json_last_error()
的json_decode()
不适合您吗? 您是否只是在寻找一种方法来表达“这看起来像 JSON”还是实际验证它?json_decode()
将是在 PHP 中有效验证它的唯一方法。Doesn't
json_decode()
with ajson_last_error()
work for you? Are you looking for just a method to say "does this look like JSON" or actually validate it?json_decode()
would be the only way to effectively validate it within PHP.这是最好、最有效的方法
This is the best and efficient way
json_validate() 将在 PHP 8.3 中上线
json_validate() will Be live in PHP 8.3
最后! 从 PHP 8.3 开始,可以使用新的 PHP 8.3。 php.net/manual/en/function.json-validate.php" rel="nofollow noreferrer">json_validate() 函数:
该函数仅接受字符串作为第一个参数: 此代码段的输出
Finally! As of PHP 8.3 one can use the new json_validate() function:
This function only accepts a string as the first argument: output of this snippet