Spaces:
Runtime error
Runtime error
| import json | |
| import os | |
| import io | |
| # JSON UTILS # | |
| # ============================ # | |
| def _make_r_io_base(f, mode: str): | |
| if not isinstance(f, io.IOBase): | |
| f = open(f, mode=mode) | |
| return f | |
| def jload(f, mode="r"): | |
| """Load a .json file into a dictionary.""" | |
| f = _make_r_io_base(f, mode) | |
| jdict = json.load(f) | |
| f.close() | |
| return jdict | |
| def jdump(obj, f, mode="w", indent=4, default=str): | |
| """Dump a str or dictionary to a file in json format. | |
| Args: | |
| obj: An object to be written. | |
| f: A string path to the location on disk. | |
| mode: Mode for opening the file. | |
| indent: Indent for storing json dictionaries. | |
| default: A function to handle non-serializable entries; defaults to `str`. | |
| """ | |
| if not isinstance(f, io.IOBase): | |
| f_dirname = os.path.dirname(f) | |
| if f_dirname != "": | |
| makedirs(f_dirname) | |
| f = open(f, mode=mode) | |
| if isinstance(obj, (dict, list)): | |
| json.dump(obj, f, indent=indent, default=default) | |
| elif isinstance(obj, str): | |
| f.write(obj) | |
| else: | |
| raise ValueError(f"Unexpected type: {type(obj)}") | |
| f.close() | |
| def jdumps(obj, indent=4, default=str): | |
| return json.dumps(obj, indent=indent, default=default) | |