Home > Backend Development > Python Tutorial > How Can I Make My Python Classes JSON Serializable?

How Can I Make My Python Classes JSON Serializable?

Patricia Arquette
Release: 2024-12-21 14:38:15
Original
108 people have browsed it

How Can I Make My Python Classes JSON Serializable?

Making Python Classes JSON Serializable

Serialization allows objects to be converted into a format suitable for persistence or transfer. Serializing custom classes in JSON often results in a TypeError due to their non-JSON-serializable nature.

Implementing a toJSON() Method

One approach is to create a toJSON() method for the class, which manually handles its serialization. This requires implementing a custom JSON serialization function and ensuring proper handling of nested objects.

import json

class FileItem:
    def __init__(self, fname):
        self.fname = fname

    def toJSON(self):
        return json.dumps(self.__dict__)

x = FileItem('/foo/bar')
print(x.toJSON())  # Outputs: '{"fname": "/foo/bar"}'
Copy after login

Using the orjson Library

For a comprehensive solution, consider using the orjson library, which provides an efficient and customizable way to serialize custom classes to JSON. It offers advanced features like schema enforcement and support for complex object structures.

import orjson

@orjson.dataclass
class FileItem:
    fname: str

x = FileItem('/foo/bar')
json_bytes = orjson.dumps(x)  # Returns a byte string
print(json_bytes.decode())  # Outputs: '{"fname": "/foo/bar"}'
Copy after login

Conclusion

Using a custom toJSON() method or the orjson library provides convenient solutions for serializing Python classes to JSON. Both approaches ensure that objects can be effectively represented and transmitted in a JSON format.

The above is the detailed content of How Can I Make My Python Classes JSON Serializable?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template