из предоставленного вами кода я могу только предположить, какие типы являются именно вашими property_A, property_B, property_C
переменными / атрибутами, но
@classmethod
def from_json(cls, jason_data):
object_name = myObject(jason_data['property A'])
property_B = myObject(jason_data['property B'])
c_list = []
for var in jason_data['property C']:
c_list.append(myObject(var))
object_name.property_B = property_B
object_name.property_C = c_list
return object_name
Позвольте мне предположить, что ваши свойства - это Classinstances, у которых нет "определения" того, как онидолжен быть сериализован в JSON.Это подтверждается тем, что вы сказали:
«Объект типа myObject не поддерживает сериализацию в формате JSON»
Я думаю, проблема в методе from_json()
class, естьВы, вероятно, должны сделать что-л.например:
EDITED :
Предполагая, что метод __init__()
вашего класса выглядит следующим образом
def __init__(self, name, property_A, property_B, property_C):
self.name = name
self.property_A = property_A
self.property_B = property_B
self.property_C = property_C
# property_C should be a list, you may want to add validation method
# which checks for correct types if it is preocess cirtical
Я предлагаю следующее:
@classmethod
def from_json(cls, jason_data):
return cls(
jason_data['name'],
jason_data['property A'],
jason_data['property B'],
jason_data['property C']
)
Кроме того, я предлагаю, если это возможно, изменить формат JSON, предоставленный в вашем методе to_json()
, просто заменив пробельные символы из "свойства A" на "property_A" (то же самое для других свойств),Кроме того, вы можете изменить «Имя» на строчные «имя».
Почему?Потому что с этим форматом и моим измененным __init__()
методом вы можете преобразовать from_json()
в следующее, используя операцию распаковки:
@classmethod
def from_json(cls, jason_data):
return cls(**json_data)