Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah saya Boleh Mensiri Kelas Python Tersuai ke JSON?

Bagaimanakah saya Boleh Mensiri Kelas Python Tersuai ke JSON?

Barbara Streisand
Barbara Streisandasal
2024-12-27 04:20:21716semak imbas

How Can I Serialize Custom Python Classes to JSON?

Mensiri Kelas Python Tersuai kepada JSON

Masalah

Kelas Python tidak boleh disirikan secara asli kepada JSON. Pertimbangkan kelas berikut:

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

Kelas ini tidak boleh bersiri terus kepada JSON:

>>> import json
>>> x = FileItem('/foo/bar')
>>> json.dumps(x)
TypeError: Object of type 'FileItem' is not JSON serializable

Penyelesaian

Untuk menyelesaikan isu ini, satu pendekatan adalah dengan melaksanakan kaedah serializer:

toJSON() Kaedah

import json

class Object:
    def toJSON(self):
        return json.dumps(
            self,
            default=lambda o: o.__dict__, 
            sort_keys=True,
            indent=4)

Dengan kaedah ini sedia ada, anda boleh membuat siri kelas:

me = Object()
me.name = "Onur"
me.age = 35
me.dog = Object()
me.dog.name = "Apollo"

print(me.toJSON())

Ini akan mengeluarkan JSON berikut:

{
    "age": 35,
    "dog": {
        "name": "Apollo"
    },
    "name": "Onur"
}

Perpustakaan Tambahan

Untuk penyelesaian yang lebih komprehensif, anda boleh menggunakan orjson perpustakaan.

Atas ialah kandungan terperinci Bagaimanakah saya Boleh Mensiri Kelas Python Tersuai ke JSON?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn