Files
courses/py3interm/EXAMPLES/json_custom_singledispatch.py
2025-05-20 11:57:43 -04:00

59 lines
1.0 KiB
Python

#!/usr/bin/env python
#
import json
from datetime import date, datetime
from functools import singledispatch
# uncomment if Python version < 3.4 and comment out above line
# from singledispatch import singledispatch
class Parrot():
def __init__(self, name, color):
self._name = name
self._color = color
@property
def name(self):
return self._name
@property
def color(self):
return self._color
parrots = [
Parrot('Polly', 'green'),
Parrot('Peggy', 'blue'),
Parrot('Roger', 'red'),
]
data = {
'spam': [1, 2, 3],
'ham': ('a', 'b', 'c'),
'date': date(2014, 8, 1),
'timestamp': datetime(2014, 8, 1, 15, 34, 19),
'parrots': parrots,
}
@singledispatch
def encode(obj):
return obj
@encode.register(date)
def encode_date(date_obj):
return date_obj.isoformat()
@encode.register(Parrot)
def encode_parrot(parrot_obj):
return {'name': parrot_obj.name, 'color': parrot_obj.color}
# register other encoding functions here
print(json.dumps(data, default=encode, indent=4))