Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Mensiri Objek Perpuluhan ke JSON dalam Python Semasa Mengekalkan Ketepatan?

Bagaimanakah Saya Boleh Mensiri Objek Perpuluhan ke JSON dalam Python Semasa Mengekalkan Ketepatan?

Linda Hamilton
Lepaskan: 2024-12-29 18:42:12
asal
385 orang telah melayarinya

How Can I Serialize Decimal Objects to JSON in Python While Preserving Precision?

Mensirikan Objek Perpuluhan kepada JSON dalam Python

Isu biasa timbul apabila cuba mengekod objek Perpuluhan ke dalam rentetan JSON, mengekalkan ketepatannya . Pendekatan lalai untuk menukar kepada apungan mengakibatkan kehilangan ketepatan.

Penyelesaian 1: SimpleJSON (Python 2.1 dan ke atas)

SimpleJSON menyediakan sokongan intuitif untuk objek Perpuluhan melalui bendera 'use_decimal':

import simplejson as json

json.dumps(Decimal('3.9'), use_decimal=True)
# Output: '3.9'
Salin selepas log masuk

Secara lalai, 'use_decimal' ditetapkan kepada Benar, menghapuskan keperluan untuk spesifikasi eksplisit:

json.dumps(Decimal('3.9'))
# Output: '3.9'
Salin selepas log masuk

Penyelesaian 2: Pengekod JSON Tersuai

Jika SimpleJSON bukan pilihan, anda boleh mencipta pengekod JSON tersuai yang mengendalikan Perpuluhan objek:

import decimal
import json

class DecimalEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, decimal.Decimal):
            return float(obj)
        # Handle other object types as needed
        return super().default(obj)

json.dumps(Decimal('3.9'), cls=DecimalEncoder)
# Output: '3.8999999999999999'
Salin selepas log masuk

Perhatikan bahawa pendekatan ini akan menukar objek Perpuluhan kepada apungan, yang berpotensi menyebabkan kehilangan ketepatan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mensiri Objek Perpuluhan ke JSON dalam Python Semasa Mengekalkan Ketepatan?. 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