Crimson-Crow / json-numpy

JSON encoding/decoding for Numpy arrays and scalars
MIT License
15 stars 2 forks source link
encoding-decoding json numpy python serialization

json-numpy

PyPI PyPI - Python Version GitHub PRs Welcome

Description

json-numpy provides lossless and quick JSON encoding/decoding for NumPy arrays and scalars.

json-numpy follows Semantic Versioning.

Installation

json-numpy can be installed using pip:

$ pip install json-numpy

Usage

For a quick start, json_numpy can be used as a simple drop-in replacement of the built-in json module. \ The dump(), load(), dumps() and loads() methods are implemented by wrapping the original methods and replacing the default encoder and decoder. \ More information on the usage can be found in the json module's documentation.

import numpy as np
import json_numpy

arr = np.array([0, 1, 2])
encoded_arr_str = json_numpy.dumps(arr)
decoded_arr = json_numpy.loads(encoded_arr_str)

Another way of using json_numpy is to explicitly use the provided encoder and decoder functions in conjunction with the json module.

import json
import numpy as np
from json_numpy import default, object_hook

arr = np.array([0, 1, 2])
encoded_arr_str = json.dumps(arr, default=default)
decoded_arr = json.loads(encoded_arr_str, object_hook=object_hook)

Finally, the last way of using json_numpy is by monkey patching the json module after importing it first:

import json
import numpy as np
import json_numpy

json_numpy.patch()

arr = np.array([0, 1, 2])
encoded_arr_str = json.dumps(arr)
decoded_arr = json.loads(encoded_arr_str)

This method can be used to change the behavior of a module depending on the json module without editing its code.

Tests

The simplest way to run tests is:

$ python -m unittest

As a more robust alternative, you can install tox to automatically test across the supported python versions, then run:

$ tox

Issue tracker

Please report any bugs or enhancement ideas using the issue tracker.

License

json-numpy is licensed under the terms of the MIT License (see LICENSE.txt for more information).