- ObsPy Documentation (1.0.0)
- Module code
Source code for obspy.io.json.core
# -*- coding: utf-8 -*-
from __future__ import (absolute_import, division, print_function,
unicode_literals)
from future.builtins import * # NOQA
import json
import sys
from obspy.core.util.deprecation_helpers import \
DynamicAttributeImportRerouteModule
from .default import Default
[docs]def get_dump_kwargs(minify=True, no_nulls=True, **kwargs):
"""
Return dict of kwargs for :py:func:`json.dump` or
:py:func:`json.dumps`.
:param bool minify: Use no spaces between separators (True)
:param bool no_nulls: Omit null values and empty sequences/mappings (True)
"""
if minify:
kwargs["separators"] = (',', ':')
kwargs["default"] = Default(omit_nulls=no_nulls)
return kwargs
[docs]def _write_json(obj, filename, omit_nulls=False, pretty_print=True,
**kwargs):
"""
Write object to a file in JSON format
:type obj: :mod:`~obspy.core.event` class object
:param obj: The ObsPy Event-type object to write.
:type filename: str or file
:param filename: Filename to write or open file-like object.
:type omit_nulls: bool
:param omit_nulls: Don't include empty-valued attributes
:type pretty_print: bool
:param pretty_print: Indent for readability
.. note::
This function is registered via the
:meth:`~obspy.core.event.Catalog.write` method of an ObsPy
:class:`~obspy.core.event.Catalog` object, but is also valid for any
obspy event-type object (or any serializable python object that
contains an obspy event-type object)
"""
try:
# Open filehandler or use an existing file like object.
if not hasattr(filename, "write"):
file_opened = True
fh = open(filename, "wt")
else:
file_opened = False
fh = filename
default = Default(omit_nulls=omit_nulls)
if pretty_print:
kwargs.setdefault('indent', 2)
json_string = str(json.dumps(obj, default=default, **kwargs))
fh.write(json_string)
finally:
# Close if a file has been opened by this function.
if file_opened is True:
fh.close()
# Remove once 0.11 has been released.
sys.modules[__name__] = DynamicAttributeImportRerouteModule(
name=__name__, doc=__doc__, locs=locals(),
original_module=sys.modules[__name__],
import_map={},
function_map={
'writeJSON': 'obspy.io.json.core._write_json'})