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

class User:
    def __init__(self, id, name):
        self.id = id
        self.name = name

    @property
    def id(self):
        return self.__id

    @id.setter
    def id(self, id):
        self.__id = id

    @property
    def name(self):
        return self.__name

    @name.setter
    def name(self, name):
        self.__name = name

Next, I need to serialize it into JSON.

json_encoder.py

from json import JSONEncoder


def beautify_key(str):
    index = str.index('__')
    if index <= 0:
        return str

    return str[index + 2:]


class JsonEncoder(JSONEncoder):

    def default(self, o):
        return {beautify_key(k): v for k, v in vars(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"