eli*_*gro 16 python json dictionary
我在Python中有一个字符串,我想知道它是否是有效的JSON.
json.loads(mystring)
如果字符串不是JSON但是我不想捕获异常,则会引发错误.
我想要这样的东西,但它不起作用:
if type(mysrting) == dict:
myStrAfterLoading = json.loads(mystring)
else:
print "invalid json passed"
Run Code Online (Sandbox Code Playgroud)
我是否必须捕获ValueError以查看我的字符串是否为JSON?
Jos*_*sad 42
正确答案是:停止不想抓住ValueError
.
示例Python脚本如果字符串有效,则返回布尔值json:
import json
def is_json(myjson):
try:
json_object = json.loads(myjson)
except ValueError as e:
return False
return True
print(is_json('{}')) # prints True
print(is_json('{asdf}')) # prints False
print(is_json('{"age":100}')) # prints True
print(is_json('{'age':100 }')) # prints False
print(is_json('{"age":100 }')) # prints True
Run Code Online (Sandbox Code Playgroud)
Dan*_*elB 22
要验证字符串是否需要解析它 - 所以如果你检查然后转换它将花费两倍的时间.捕获异常是最好的方法.有趣的是,您仍然可以使用if-else样式表达式:
try:
json_object = json.loads(json_string)
except ValueError, e:
pass # invalid json
else:
pass # valid json
Run Code Online (Sandbox Code Playgroud)
pca*_*cao 10
你有什么理由不想抓住这个例外吗?
请记住,在Python中测试和捕获异常可能非常快,并且通常是Pythonic的处理方式,而不是测试类型(基本上,信任duck typing并相应地做出反应).
为了让你的思绪更加轻松,请看一下: Python if try-except
如果您仍然担心可读性,请在代码中添加注释以解释为什么使用try/except;)
我用这个方法我过去从Java背景的挣扎,但是这是确实是在Python这样做的最简单的方法......简单比复杂好.
归档时间: |
|
查看次数: |
45345 次 |
最近记录: |