我有大致如下的datetime.datetime对象和namedtuples嵌套Python数据结构:的Python:Json的编码具有namedtuples嵌套数据结构,日期
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"]]]
我会要想打开namedtuples成类型的字典(可能使用namedtuple ._asdict()
方法),得到以下的输出:
[["2012-06-21T00:48:03.296381", {"name":"jules", "contact":"1234"}],
["2012-06-21T01:47:03.296423", {"name":"dan", "contact":"5678"}]]
我怎么能保持一般的数据结构,但JSON转储namedtuples为http://stardict.sourceforge.net/Dictionaries.php下载?
有问题吗? –
我已经添加了一行“我如何保留通用数据结构,但json将namedtuples转储为字典?”在问题的最后,让问题更清楚。谢谢。 – rorycl