Pin*_*hio 12 python serialization json
我试图检查对象是否是JSON可序列化的,因为我有一个包含大量内容的字典,此时它更容易遍历其键并查找它们是否是JSON可序列化并删除它们.像(虽然这检查它的功能):
def remove_functions_from_dict(arg_dict):
'''
Removes functions from dictionary and returns modified dictionary
'''
keys_to_delete = []
for key,value in arg_dict.items():
if hasattr(value, '__call__'):
keys_to_delete.append(key)
for key in keys_to_delete:
del arg_dict[key]
return arg_dict
Run Code Online (Sandbox Code Playgroud)
是否有一种方法,if语句代替检查JSON可序列化对象,并以类似于上面的方式从字典中删除它们?
shx*_*hx2 24
比宽容更容易请求宽恕.
import json
def is_jsonable(x):
try:
json.dumps(x)
return True
except:
return False
Run Code Online (Sandbox Code Playgroud)
然后在你的代码中:
for key,value in arg_dict.items():
if not is_jsonable(value):
keys_to_delete.append(key)
Run Code Online (Sandbox Code Playgroud)
小智 10
@ shx2的答案足够好,但是最好指定要捕获的异常。
def is_jsonable(x):
try:
json.dumps(x)
return True
except (TypeError, OverflowError):
return False
Run Code Online (Sandbox Code Playgroud)
当x包含一个太大而JSON无法编码的数字时,抛出OverflowError。一个相关的答案可以在这里找到。
归档时间: |
|
查看次数: |
5616 次 |
最近记录: |