Вот как я хочу, чтобы мои данные были: (ключ = имя, значение = [д.р., [MISC1, MISC2, ..]])JSON свалка для пользовательского класса в Python
# my sample code
inputNames = [
('james', ['1990-01-19', ['james1', 'james2', 'james3'] ]),
('julie', ['1991-08-07', ['julie1', 'julie2'] ]),
('mikey', ['1989-01-23', ['mikey1'] ]),
('sarah', ['1988-02-05', ['sarah1', 'sarah2', 'sarah3', 'sarah4'] ])
]
class empData (list):
def __init__ (self, misc=None):
list.__init__([])
# print('add empdata: ',misc[0],misc[1])
self.dob = misc[0]
self.extend(misc[1])
def edprint(self):
return(self.dob, self)
class myEmp():
def __init__ (self, anm, amisc=None):
self.nm = anm
self.details = empData(amisc)
def printme(self):
print(self.nm, self.details.edprint())
emps={}
for i in inputNames:
m = myEmp(i[0],i[1])
emps[m] = m
print(emps)
# prints addresses of variables
# for actual data use the following lines
for ea in emps:
emps[ea].printme()
try:
with open('data.json','w') as wfd:
json.dump(emps, wfd)
except IOError as ioerr:
print('File error: ',str(ioerr))
wfd.close()
выше дает мне ошибку: TypeError: ключ < главный .myEmp объект в 0x10143d588> не является строкой Я не могу понять, как сбросить мой Dict структур данных myEmp в формате JSON
Em, не странно, если вы пытаетесь сбросить что-то, что не является стандартным общепринятым типа: Вы создаете свой собственный класс ** myEmp ** так как JSON Cann знаете, как представлять этот объект? Вы можете создать пользовательский JSONEncoder, как говорит doc, или установить skipkeys в значение True, если вы хотите просто передать эту ошибку. –
я сделал это слишком: класс myEmpEncoder (json.JSONEncoder): четкости по умолчанию (я, объект): если isinstance (объект, myEmp): возвращение [obj.nm, obj.details] # Пусть базовый класс по умолчанию используется метод повышения TypeError возврата json.JSONEncoder.default (самоощущение, OBJ) И назвал ее: json.dump (мс, РВД, ЦБС = myEmpEncoder) я все еще получаю ошибку: TypeError:. клавиши <__ __ основной myEmp объект в 0x101bf5940> не является строкой – user6785453
И логично то, что я делаю, это сбрасывание dict моих сотрудников «emps» в JSON. Ключ - это имя сотрудника, а данные сотрудника - произвольный список. Так не должен ли python сбрасывать dict? – user6785453