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'
Secara lalai, 'use_decimal' ditetapkan kepada Benar, menghapuskan keperluan untuk spesifikasi eksplisit:
json.dumps(Decimal('3.9')) # Output: '3.9'
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'
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!