Skip to content Skip to sidebar Skip to footer

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"