|
@@ -41,9 +41,8 @@ class Car(JsonSerializableMixin):
|
|
|
class DictMixin:
|
|
|
|
|
|
def to_dict(self):
|
|
|
- # print(vars(self))
|
|
|
- print(json.dumps(self, default = lambda x:x.__dict__))
|
|
|
- return self.__dict__
|
|
|
+ foo = json.dumps(self, default = lambda x:x.__dict__)
|
|
|
+ return json.loads(foo)
|
|
|
|
|
|
class Phone(DictMixin):
|
|
|
def __init__(self, number):
|
|
@@ -84,6 +83,83 @@ def main():
|
|
|
john_doe_dict = john_doe.to_dict()
|
|
|
|
|
|
print(john_doe_dict)
|
|
|
+ print(type(john_doe_dict))
|
|
|
+
|
|
|
+ assert john_doe_dict == {
|
|
|
+ 'name': 'John Doe',
|
|
|
+ 'age': 30,
|
|
|
+ 'address': {
|
|
|
+ 'street': '123 Main St',
|
|
|
+ 'city': 'Anytown',
|
|
|
+ 'state': 'CA',
|
|
|
+ 'zip_code': '12345'
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ address = Address("123 Main St", "Albuquerque", "NM", "987654")
|
|
|
+ assert address.to_dict() == {
|
|
|
+ 'street': '123 Main St',
|
|
|
+ 'city': 'Albuquerque',
|
|
|
+ 'state': 'NM',
|
|
|
+ 'zip_code': '987654'
|
|
|
+ }
|
|
|
+ walter = Person("Walter White", 30, address)
|
|
|
+ assert walter.to_dict() == {'address': {'city': 'Albuquerque',
|
|
|
+ 'state': 'NM',
|
|
|
+ 'street': '123 Main St',
|
|
|
+ 'zip_code': '987654'},
|
|
|
+ 'age': 30,
|
|
|
+ 'name': 'Walter White'}
|
|
|
+
|
|
|
+ walter_phone = Phone("555-1234")
|
|
|
+ walter.phone = walter_phone
|
|
|
+ assert walter.to_dict() == {'address': {'city': 'Albuquerque',
|
|
|
+ 'state': 'NM',
|
|
|
+ 'street': '123 Main St',
|
|
|
+ 'zip_code': '987654'},
|
|
|
+ 'age': 30,
|
|
|
+ 'name': 'Walter White',
|
|
|
+ 'phone': {'number': '555-1234'}}
|
|
|
+
|
|
|
+ company_address = Address("3828 Piermont Dr", "Albuquerque", "NM", "12345")
|
|
|
+ company = Company("SCHOOL", company_address)
|
|
|
+
|
|
|
+ assert company.to_dict() == {'address': {'city': 'Albuquerque',
|
|
|
+ 'state': 'NM',
|
|
|
+ 'street': '3828 Piermont Dr',
|
|
|
+ 'zip_code': '12345'},
|
|
|
+ 'name': 'SCHOOL'}
|
|
|
+
|
|
|
+ jesse_address = Address("456 Oak St", "Albuquerque", "NM", "12345")
|
|
|
+ jesse = Person("Jesse Bruce Pinkman", 27, jesse_address)
|
|
|
+ jesse.phone = Phone("555-5678")
|
|
|
+
|
|
|
+ fring = Person("Gustavo Fring", 55, Address("Los Pollos Hermanos", "Albuquerque", "NM", "12345"))
|
|
|
+ fring.friends = [walter, jesse]
|
|
|
+
|
|
|
+ assert fring.to_dict() == {'address': {'city': 'Albuquerque',
|
|
|
+ 'state': 'NM',
|
|
|
+ 'street': 'Los Pollos Hermanos',
|
|
|
+ 'zip_code': '12345'},
|
|
|
+ 'age': 55,
|
|
|
+ 'friends': [{'address': {'city': 'Albuquerque',
|
|
|
+ 'state': 'NM',
|
|
|
+ 'street': '123 Main St',
|
|
|
+ 'zip_code': '987654'},
|
|
|
+ 'age': 30,
|
|
|
+ 'name': 'Walter White',
|
|
|
+ 'phone': {'number': '555-1234'}},
|
|
|
+ {'address': {'city': 'Albuquerque',
|
|
|
+ 'state': 'NM',
|
|
|
+ 'street': '456 Oak St',
|
|
|
+ 'zip_code': '12345'},
|
|
|
+ 'age': 27,
|
|
|
+ 'name': 'Jesse Bruce Pinkman',
|
|
|
+ 'phone': {'number': '555-5678'}}],
|
|
|
+ 'name': 'Gustavo Fring'}
|
|
|
+
|
|
|
+ print('Good')
|
|
|
+
|
|
|
'''
|
|
|
assert john_doe_dict == {
|
|
|
'name': 'John Doe',
|