在Python中,有没有办法在尝试解析之前检查字符串是否是有效的JSON?
例如,使用Facebook Graph API之类的东西,有时它会返回JSON,有时它可能会返回一个图像文件.
Joh*_*ess 201
您可以尝试这样做json.loads(),ValueError如果您传递的字符串无法解码为JSON ,则会抛出.
一般来说,这种情况的" Pythonic "哲学被称为EAFP,因为更容易要求宽恕而不是许可.
Eri*_*ski 125
示例Python脚本如果字符串有效,则返回布尔值json:
import json
def is_json(myjson):
try:
json_object = json.loads(myjson)
except ValueError as e:
return False
return True
Run Code Online (Sandbox Code Playgroud)
哪个印刷品:
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
print is_json('{"age":100 }') #prints True
print is_json('{"foo":[5,6.8],"foo":"bar"}') #prints True
Run Code Online (Sandbox Code Playgroud)
将JSON字符串转换为Python字典:
import json
mydict = json.loads('{"foo":"bar"}')
print(mydict['foo']) #prints bar
mylist = json.loads("[5,6,7]")
print(mylist)
[5, 6, 7]
Run Code Online (Sandbox Code Playgroud)
将python对象转换为JSON字符串:
foo = {}
foo['gummy'] = 'bear'
print(json.dumps(foo)) #prints {"gummy": "bear"}
Run Code Online (Sandbox Code Playgroud)
如果您想要访问低级解析,请不要自己滚动,使用现有的库:http://www.json.org/
关于python JSON模块的精彩教程:https: //pymotw.com/2/json/