首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Python中检查字符串是否为有效的JSON?

如何在Python中检查字符串是否为有效的JSON?
EN

Stack Overflow用户
提问于 2011-04-01 10:16:38
回答 3查看 247.1K关注 0票数 232

在Python中,有没有一种方法可以在解析字符串之前检查它是否是有效的JSON?

例如,使用Facebook Graph API时,它有时会返回JSON,有时会返回图像文件。

EN

回答 3

Stack Overflow用户

发布于 2011-04-01 10:35:54

我想说的是,解析它是你真正完全了解它的唯一方法。如果格式不正确,python的json.loads()函数(几乎可以肯定)会引发异常。但是,根据示例的目的,您可能只需检查前几个非空格字符...

我对facebook发回的JSON并不熟悉,但是大多数来自web应用的JSON字符串都会以一个开放的方形[或花括号{开头。据我所知,没有任何图像格式是以这些字符开头的。

相反,如果您知道可能显示的图像格式,则可以检查字符串的开头是否有签名来识别图像,如果不是图像,则假定您有JSON。

识别图形而不是文本字符串的另一个简单技巧是测试字符串的前几十个字符中是否有非ASCII字符(假设JSON是ASCII)。

票数 2
EN

Stack Overflow用户

发布于 2015-02-18 21:14:44

对于这个问题,我想出了一个通用的、有趣的解决方案:

代码语言:javascript
复制
class SafeInvocator(object):
    def __init__(self, module):
        self._module = module

    def _safe(self, func):
        def inner(*args, **kwargs):
            try:
                return func(*args, **kwargs)
            except:
                return None

        return inner

    def __getattr__(self, item):
        obj = getattr(self.module, item)
        return self._safe(obj) if hasattr(obj, '__call__') else obj

你可以这样使用它:

代码语言:javascript
复制
safe_json = SafeInvocator(json)
text = "{'foo':'bar'}"
item = safe_json.loads(text)
if item:
    # do something
票数 0
EN

Stack Overflow用户

发布于 2021-06-07 19:27:46

在try块中简单得多。然后,您可以验证主体是否为有效的JSON

代码语言:javascript
复制
async def get_body(request: Request):
try:
    body = await request.json()
except:
    body = await request.body()
return body
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5508509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档