Source code for microesb.transformer
# ]*[ --------------------------------------------------------------------- ]*[
# . Micro ESB transformer Python Module .
# ]*[ --------------------------------------------------------------------- ]*[
# . .
# . Copyright Claus Prüfer 2016-2024 .
# . .
# . .
# ]*[ --------------------------------------------------------------------- ]*[
import json
import copy
[docs]class JSONTransformer(object):
""" JSON transfomer class.
"""
[docs] def __init__(self):
"""
:ivar dict[dict] _json_dict: recursive internal properties processing dict
"""
self._json_dict = {}
[docs] def json_transform(self):
""" json_transform() method.
Recursive generate _json_dict for complete object hierarchy.
"""
root_instance = copy.copy(self)
for element in root_instance.iterate():
element.set_json_dict()
self.logger.debug('JSON:{} properties:{}'.format(
element.json_dict,
element._SYSProperties
)
)
while root_instance.class_count > 0:
for element in root_instance.iterate():
if element.class_count == 0 and element._SYSType != 'multiclass_instance':
cname = element.class_name
parent_element = element.parent_object
parent_element._json_dict[cname] = element.json_dict[cname]
class_names_list = parent_element._SYSClassNames
del class_names_list[class_names_list.index(cname)]
self._json_dict = root_instance.json_dict
del root_instance
@property
def json(self):
""" json() method.
:return: json.dumps(self._json_dict)
:rtype: str (json dump)
Decorated with @property so direct property access possible
"""
return json.dumps(self._json_dict)
@property
def json_dict(self):
""" json_dict() method.
:return: self._json_dict
:rtype: dict
Decorated with @property so direct property access possible
"""
return self._json_dict