blob: 3b524137254bb5258efe81041d340f825d585bc0 [file] [log] [blame]
import json
def _matches_format(path_or_file):
if isinstance(path_or_file, str):
path_or_file = open(path_or_file)
try:
json.load(path_or_file)
return True
except Exception:
return False
def _load_format(path_or_file):
if isinstance(path_or_file, str):
path_or_file = open(path_or_file)
return json.load(path_or_file)
def _dump_format(obj, fp):
# The json module produces str objects but fp is opened in binary mode
# (since Plistlib only dump to binary mode files) so we first dump into
# a string a convert to UTF-8 before outputing.
json_str = json.dumps(obj)
fp.write(json_str.encode())
format = {
'name': 'json',
'predicate': _matches_format,
'read': _load_format,
'write': _dump_format,
}