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"