Categories
Python Answers

How to fix NumPy array is not JSON serializable with Python?

Spread the love

Sometimes, we want to fix NumPy array is not JSON serializable with Python.

In this article, we’ll look at how to fix NumPy array is not JSON serializable with Python.

How to fix NumPy array is not JSON serializable with Python?

To fix NumPy array is not JSON serializable with Python, we canm create our encoder class.

For instance, we write

class NumpyEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, np.ndarray):
            return obj.tolist()
        return json.JSONEncoder.default(self, obj)

a = np.array([[1, 2, 3], [4, 5, 6]])
json_dump = json.dumps({'a': a, 'aa': [2, (2, 3, 4), a], 'bb': [2]}, 
                       cls=NumpyEncoder)

to create the NumpyEncoder class that has the default method.

In it, we check if obj is a NumPy array instance with isinstance.

If it’s true, then we call tolist to convert it to a list.

Otherwise, we return the JSON string with

json.JSONEncoder.default(self, obj)

Then we call json.dumps with NumPy array a and cls set to NumpyEncoder to return the JSON string version of a.

To convert a JSON string to a NumPy array, we write

json_load = json.loads(json_dump)
a_restored = np.asarray(json_load["a"])

to call json.loads to load the json_dump string into a dict.

Then we call np.asrray to get the entry in json_load with key 'a' and convert it into a NumPy array.

Conclusion

To fix NumPy array is not JSON serializable with Python, we canm create our encoder class.

By John Au-Yeung

Web developer specializing in React, Vue, and front end development.

Leave a Reply

Your email address will not be published. Required fields are marked *