Fixed serializer
- added support for datetime Change-Id: I68399f3fc303e16730e56afa254a7bc4b83efdf8
This commit is contained in:
parent
e01f690a86
commit
79f7a63ae1
@ -1,8 +1,7 @@
|
||||
import datetime
|
||||
from datetime import datetime
|
||||
from json import JSONEncoder
|
||||
from synergy.common import utils
|
||||
|
||||
|
||||
__author__ = "Lisa Zangrando"
|
||||
__email__ = "lisa.zangrando[AT]pd.infn.it"
|
||||
__copyright__ = """Copyright (c) 2015 INFN - INDIGO-DataCloud
|
||||
@ -100,6 +99,8 @@ class SynergyObject(object):
|
||||
|
||||
del entity["synergy_object"]
|
||||
|
||||
entity = utils.objectHookHandler(entity)
|
||||
|
||||
for key, value in entity.items():
|
||||
if isinstance(value, dict):
|
||||
if "synergy_object" in value:
|
||||
@ -148,7 +149,7 @@ class SynergyObject(object):
|
||||
result[key].append(item.serialize())
|
||||
else:
|
||||
result[key].append(item)
|
||||
elif isinstance(value, datetime.datetime):
|
||||
elif isinstance(value, datetime):
|
||||
result[key] = value.isoformat()
|
||||
else:
|
||||
result[key] = value
|
||||
@ -160,5 +161,7 @@ class SynergyEncoder(JSONEncoder):
|
||||
def default(self, obj):
|
||||
if isinstance(obj, SynergyObject):
|
||||
return obj.serialize()
|
||||
elif isinstance(obj, datetime):
|
||||
return obj.isoformat()
|
||||
else:
|
||||
return JSONEncoder.default(self, obj)
|
||||
|
@ -1,6 +1,8 @@
|
||||
import sys
|
||||
import traceback
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
__author__ = "Lisa Zangrando"
|
||||
__email__ = "lisa.zangrando[AT]pd.infn.it"
|
||||
__copyright__ = """Copyright (c) 2015 INFN - INDIGO-DataCloud
|
||||
@ -33,14 +35,24 @@ def import_class(import_str):
|
||||
(class_str, traceback.format_exception(*sys.exc_info())))
|
||||
|
||||
|
||||
def objectHookHandler(parsed_dict):
|
||||
if "synergy_object" in parsed_dict:
|
||||
synergy_object = parsed_dict["synergy_object"]
|
||||
def objectHookHandler(json_dict):
|
||||
for key, value in json_dict.items():
|
||||
if isinstance(value, dict):
|
||||
json_dict[key] = objectHookHandler(value)
|
||||
else:
|
||||
try:
|
||||
json_dict[key] = datetime.strptime(value,
|
||||
"%Y-%m-%dT%H:%M:%S.%f")
|
||||
except Exception as ex:
|
||||
pass
|
||||
|
||||
if "synergy_object" in json_dict:
|
||||
synergy_object = json_dict["synergy_object"]
|
||||
try:
|
||||
objClass = import_class(synergy_object["name"])
|
||||
objInstance = objClass()
|
||||
return objInstance.deserialize(parsed_dict)
|
||||
return objInstance.deserialize(json_dict)
|
||||
except Exception as ex:
|
||||
raise ex
|
||||
else:
|
||||
return parsed_dict
|
||||
return json_dict
|
||||
|
Loading…
x
Reference in New Issue
Block a user