File tree Expand file tree Collapse file tree 1 file changed +17
-2
lines changed Expand file tree Collapse file tree 1 file changed +17
-2
lines changed Original file line number Diff line number Diff line change @@ -14,6 +14,21 @@ import base64
1414import json
1515import pickle
1616import sys
17+ from datetime import datetime
18+
19+ def default_serializer(o):
20+ if isinstance(o, datetime):
21+ return o.isoformat()
22+ return str(o)
23+
24+ def object_hook(obj):
25+ for k, v in obj.items():
26+ if isinstance(v, str):
27+ try:
28+ obj[k] = datetime.fromisoformat(v)
29+ except ValueError:
30+ pass
31+ return obj
1732
1833if __name__ == "__main__":
1934 if len(sys.argv) >= 3:
@@ -24,11 +39,11 @@ if __name__ == "__main__":
2439 if action == 'decode':
2540 decoded = base64.b64decode(content)
2641 obj = pickle.loads(decoded)
27- unserialized = json.dumps(obj, ensure_ascii=False)
42+ unserialized = json.dumps(obj, ensure_ascii=False, default=default_serializer )
2843 print(base64.b64encode(unserialized.encode('utf-8')).decode('utf-8'))
2944 elif action == 'encode':
3045 decoded = base64.b64decode(content)
31- obj = json.loads(decoded)
46+ obj = json.loads(decoded, object_hook=object_hook )
3247 serialized = pickle.dumps(obj)
3348 print(base64.b64encode(serialized).decode('utf-8'))
3449 except:
You can’t perform that action at this time.
0 commit comments