Source code for lodstorage.jsonpicklemixin

# Json persistence
import os

import jsonpickle


[docs] class JsonPickleMixin(object): """ allow reading and writing derived objects from a jsonpickle file """ debug = False
[docs] @staticmethod def checkExtension(jsonFile: str, extension: str = ".json") -> str: """ make sure the jsonFile has the given extension e.g. ".json" Args: jsonFile(str): the jsonFile name - potentially without ".json" suffix Returns: str: the jsonFile name with ".json" as an extension guaranteed """ if not jsonFile.endswith(extension): jsonFile = f"{jsonFile}{extension}" return jsonFile
# read me from a json pickle file
[docs] @staticmethod def readJsonPickle(jsonFileName, extension=".jsonpickle"): """ Args: jsonFileName(str): name of the file (optionally without ".json" postfix) extension(str): default file extension """ jsonFileName = JsonPickleMixin.checkExtension(jsonFileName, extension) # is there a jsonFile for the given name if os.path.isfile(jsonFileName): if JsonPickleMixin.debug: print("reading %s" % (jsonFileName)) with open(jsonFileName) as jsonFile: json = jsonFile.read() result = jsonpickle.decode(json) if JsonPickleMixin.debug: print(json) print(result) return result else: return None
[docs] def asJsonPickle(self) -> str: """ convert me to JSON Returns: str: a JSON String with my JSON representation """ json = jsonpickle.encode(self) return json
[docs] def writeJsonPickle(self, jsonFileName: str, extension: str = ".jsonpickle"): """ write me to the json file with the given name (optionally without postfix) Args: jsonFileName(str): name of the file (optionally without ".json" postfix) extension(str): default file extension """ jsonFileName = JsonPickleMixin.checkExtension(jsonFileName, extension) json = self.asJsonPickle() if JsonPickleMixin.debug: print("writing %s" % (jsonFileName)) print(json) print(self) jsonFile = open(jsonFileName, "w") jsonFile.write(json) jsonFile.close()