Я знаю, что я могу сделать:JSON-сериализации нестроковые ключи словаря
import datetime
def default(o):
if type(o) is datetime.datetime:
return o.isoformat()
data = {'a': datetime.datetime.today()}
json.dumps(data, default=default)
# '{"a": "2015-01-22T01:04:23.121392"}'
Это работает идеально. А что, если у меня есть DateTimes как мои ключи:
data = {datetime.datetime.today(): 'a'}
Если я попробовать то же самое он терпит неудачу с:
TypeError: keys must be a string
Есть ли способ, что я могу сделать что-то подобное, то есть пользовательский преобразователь, но и для ключи?
Примечание: Это простой пример. У меня есть глубокая вложенная структура dict, где некоторые ключи не являются строками.
EDIT: Вложенный пример, но обратите внимание, что у меня нет контроля над структурой данных, приходит из внешней функции:
data = {'a': {datetime.datetime.today(): '1'}}
Почему вы используете Python? – s16h
У вас есть существующая структура с вложенными объектами datetime? Я предлагаю исправить это, прежде чем вы их в гнездо, иначе вам придется рекурсивно пересекать dict. – user3467349
@ s16h, 2.7, но решение 3.4 было бы в порядке. – Elian