Python中的JSON使用
我在看json的文档,想搞明白怎么把一个Python对象转换成JSON数据,然后再把这些数据转换回Python对象。我知道可以把列表、字典和包含基本数据类型的元组传给json.dumps(),就像文档开头的例子那样。但是我试着创建一个非常简单的对象,传给json.dumps(),结果却提示“对象无法被转换成JSON”。
那么,怎样才能让一个对象可以被转换成JSON呢?我现在在想,是否可以写一个方法,把我的对象转换成字典,然后再把这个字典传给json.dump(),同时再写一个方法,把字典转换回新的对象。不过这样感觉有点多余,而且限制也很大,我觉得我可能漏掉了什么。有没有人能帮我解答一下?
2 个回答
0
下面这段代码展示了在Python 3中处理JSON的一些方面。请注意JSONEncoder类,以及如何对小数和日期时间进行编码。
import json
from decimal import Decimal
from datetime import datetime, date
class JSONEncoder(json.JSONEncoder):
def default(self, o):
if isinstance(o, Decimal):
return float(o)
elif isinstance(o, (datetime, date)):
return o.isoformat()
return super().default(self,o)
class JSONDecoder(json.JSONDecoder):
pass
_Default_Encoder = JSONEncoder(
skipkeys=False,
ensure_ascii=False,
check_circular=True,
allow_nan=True,
indent=None,
separators=None,
default=None,
)
_Default_Decoder = JSONDecoder(
object_hook=None,
object_pairs_hook=None
)
Encode = _Default_Encoder.encode
Decode = _Default_Decoder.decode
0
看看 load()
和 dump()
这两个函数;它们都可以接受一个叫 object_hook
的函数,用来处理那些通常不能直接转换成 JSON 格式的对象。也许这对你有帮助。