gpt4 book ai didi

Python:Json 使用命名元组、日期编码嵌套数据结构

转载 作者:行者123 更新时间:2023-11-28 22:02:28 24 4
gpt4 key购买 nike

我有一个嵌套的 Python 数据结构,其中包含 datetime.datetime 对象和命名元组,如下所示:

from datetime import datetime as dt
from datetime import timedelta
from collections import namedtuple
nt = namedtuple('n', 'name, contact')
f1 = nt('jules', '1234')
f2 = nt('dan', '5678')
x = [
[dt.now() + timedelta(minutes=1), f1],
[dt.now() + timedelta(hours=1), f2],
]

还有一个像这样的编码器:

import json
class TestEncoder(json.JSONEncoder):
def default(self, obj):
if hasattr(obj, 'isoformat'):
return obj.isoformat()
else:
return json.JSONEncoder.default(self, obj)

print json.dumps(x, cls=TestEncoder) 输出:

[["2012-06-21T00:48:03.296381", ["jules", "1234"]],
["2012-06-21T01:47:03.296423", ["dan", "5678"]]]

我想将 namedtuple 转换为字典(大概使用 namedtuple ._asdict() 方法),以获得以下输出:

[["2012-06-21T00:48:03.296381", {"name":"jules", "contact":"1234"}],
["2012-06-21T01:47:03.296423", {"name":"dan", "contact":"5678"}]]

如何保留通用数据结构,但 json 将命名元组转储为字典?

最佳答案

重新阅读文档后,使用内置的 json 库作为唯一的覆盖机制(default)似乎是不可能的,它只会在已知类型后调用(包括元组)

simplejson 通过给你一个 namedtuple_as_object 标志到 simplejson.dump

使这变得微不足道
simplejson.dumps(x, cls=TestEncoder, namedtuple_as_object=True)

关于Python:Json 使用命名元组、日期编码嵌套数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11129816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com