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
Lepaskan: 2024-12-27 04:20:21
asal
768 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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)
Salin selepas log masuk

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())
Salin selepas log masuk

Ini akan mengeluarkan JSON berikut:

{
    "age": 35,
    "dog": {
        "name": "Apollo"
    },
    "name": "Onur"
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan