Source code for lodstorage.jsonpicklemixin

# Json persistence
import jsonpickle
import os


[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()