Json Dumps With Private Fields
I would like to serialize users into json. User has only private fields. user.py class User: def __init__(self, id, name): self. set_id(id) self.set_name(name)
Solution 1:
Thanks to jasonharper So far, I found example about properties and setters Now I know how to do encapsulation in python.
user.py
classUser:
def__init__(self, id, name):
self.id = id
self.name = name
@propertydefid(self):
return self.__id @id.setterdefid(self, id):
self.__id = id @propertydefname(self):
return self.__name
@name.setterdefname(self, name):
self.__name = name
Next, I need to serialize it into JSON.
json_encoder.py
from json import JSONEncoder
defbeautify_key(str):
index = str.index('__')
if index <= 0:
returnstrreturnstr[index + 2:]
classJsonEncoder(JSONEncoder):
defdefault(self, o):
return {beautify_key(k): v for k, v invars(o).items()}
Now the output is correct for me.
[{"id":0,"name":"Alex"},{"id":1,"name":"John"}]
Post a Comment for "Json Dumps With Private Fields"