有没有一种简单的方法来检查对象是否可以在python中使用JSON序列化?
问题描述:
我试图检查对象是否是JSON序列化或不是因为我有一个字典,有一堆的东西,在这一点上它只是更容易循环通过它的键,并发现它们是否是JSON序列化并删除它们。喜欢的东西(虽然这检查其功能):有没有一种简单的方法来检查对象是否可以在python中使用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
是有办法的if语句,而不是检查JSON序列化对象,并从字典中删除它们以类似的方式上面?
答
更容易要求宽恕。
import json
def is_jsonable(x):
try:
json.dumps(x)
return True
except:
return False
然后在你的代码:
for key,value in arg_dict.items():
if not is_jsonable(value):
keys_to_delete.append(key)
+0
这是非常聪明的,对于创造力肯定是+1。 – Pinocchio
将围绕呼叫'尝试/ catch'为'json.dumps()'。 – Barmar
你真的想删除它们,或者只是不转储它们吗? – davidism
@davidism我的目标是json将所有内容都转储到字典中,除了那些不可打包的东西(json serializable)。说得通? – Pinocchio