У меня проблема, я не могу найти решение. У меня есть приложение, которое говорит с Java-приложением через JSON. Довольно просто, но у меня проблема с расшифровкой JSON с провода с вложенными объектами. Например, у меня есть:decode JSON in python
class obj1(object):
def __init__(self, var1, var2):
self.var1 = var1
self.var2 = var2
def __eq__(self, other):
return (isinstance(other, obj1) and
self.var1 == obj1.var1 and
self.var2 == obj2.var2)
class obj2(object):
def __init__(self, v1, v2, obj1):
self.v1 = v1
self.v2 = v2
self.obj1 = obj1
, и я хочу, чтобы сериализации и десериализации класс «obj2», я могу создать его довольно легко:
myObj1 = obj1(1,2)
myObj2 = obj2(3.14, 10.05, myObj1)
, когда я хочу, чтобы отправить его JSon, это очевидно, довольно легко:
import json
def obj_to_dict(obj):
return obj.__dict__
my_json = json.dumps(myObj2, default=obj_to_dict)
это создает идеальный JSON, как я бы ожидать:
{"obj1": {"var1": 1, "var2": 2}, "v1": 3.14, "v2": 10.05}
проблема, с которой я столкнулась, заключается в кодировке этой строки обратно в два объекта. Я не могу добавить дополнительную информацию о типе, потому что приложение, которое отправляет эту схему обратно, отправляет ее именно таким образом. поэтому, когда я пытаюсь и восстановить его из словаря:
obj_dict = json.loads(my_json)
myNewObj = obj2(**obj_dict)
это не совсем работает
print myNewObj.obj1 == obj1 #returns False.
Есть ли лучший способ получить из JSON -> Пользовательские объекты? (На самом деле у меня есть как 20 пользовательских объектов, вложенных в другой объект Объект -.> JSON отлично работает, его просто идти в другую сторону Любые мысли
Вы пробовали добавить вывод отладки в def __eq __ (self, other):? –
Да, в основном, что происходит myNewObj.obj1 - это словарь атрибутов и никогда не создается в объект «obj1» с правильными параметрами. – user1772250