json formatter: all subobjects are also encoded

This commit is contained in:
Romain Bignon 2013-12-22 22:12:03 +01:00
commit 818b756e27

View file

@ -19,6 +19,7 @@
from weboob.tools.json import json from weboob.tools.json import json
from weboob.capabilities.base import NotAvailable, NotLoaded
from .iformatter import IFormatter from .iformatter import IFormatter
@ -32,12 +33,14 @@ class Encoder(json.JSONEncoder):
try: try:
return json.JSONEncoder.default(self, obj) return json.JSONEncoder.default(self, obj)
except TypeError: except TypeError:
if obj is NotAvailable or obj is NotLoaded:
return None
try: try:
dct = obj.to_dict() dct = obj.to_dict()
except AttributeError: except AttributeError:
return str(obj) return str(obj)
for z in dct.itervalues(): return dct
return z
class JsonFormatter(IFormatter): class JsonFormatter(IFormatter):