I’m trying to deserialize a complex nested object from JSON using the jsons library.
The returned object from jsons.loads has the correct type but the nested objects are all of type ‘dict’
Is there a way to deserialize into the full nested object where the nested objects have the correct type?
Here’s a basic example:
import jsons
class Inner:
def __init__(self):
self.enabled = False
self.name = "Inner"
class Middle:
def __init__(self):
self.name = "Middle"
self.inners = []
for x in range(4): self.inners.append(Inner())
class Outer:
def __init__(self):
self.name = "Outer"
self.middles = []
for x in range(3): self.middles.append(Middle())
myOuter = Outer()
print (type(myOuter)) # --> <class '__main__.Outer'>
print (myOuter.middles[1].name) # --> Middle
myJson = jsons.dumps(myOuter)
reloaded = jsons.loads(myJson, cls=Outer)
print (type(reloaded)) # --> <class '__main__.Outer'>
print (reloaded.name) # --> Outer
print (type(reloaded.middles[1])) # --> <class 'dict'>
print (reloaded.middles[1].name) # --> AttributeError: 'dict' object has no attribute 'name'
New contributor
jlj is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.