SORU
25 Aralık 2009, Cuma


Python JSON Ondalık bir nesne seri hale getirmek

Bir nesne olarak Decimal('3.9') bir parçam var, ve {'x': 3.9} gibi görünmelidir hangi bir JSON dize için bu kodlamak için diliyorum. Bir şamandıra gayet iyi yani istemci tarafında hassas umrumda değil.

Bu seri hale getirmek için iyi bir yol var mı? JSONDecoder Ondalık nesneleri kabul etmiyor, ve bir yüzer dönüştürme önceden yanlış olan, {'x': 3.8999999999999999} verim ve bant genişliği büyük bir atık olacaktır.

CEVAP
30 HAZİRAN 2010, ÇARŞAMBA


Simplejson 2.1 ve daha yüksek Ondalık türü için desteği vardır.

>>> json.dumps(Decimal('3.9'), use_decimal=True)
'3.9'

use_decimal varsayılan: True olduğunu unutmayın

def dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True,
    allow_nan=True, cls=None, indent=None, separators=None,
    encoding='utf-8', default=None, use_decimal=True,
    namedtuple_as_object=True, tuple_as_array=True,
    bigint_as_string=False, sort_keys=False, item_sort_key=None,
    for_json=False, ignore_nan=False, **kw):

Yani:

>>> json.dumps(Decimal('3.9'))
'3.9'

Umarım, bu özellik standart kütüphane eklenecektir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ben Schoon

    Ben Schoon

    23 Kasım 2012
  • FlippinWindows | #1 Windows Tutorial Channel!

    FlippinWindo

    23 Mayıs 2010
  • Thom Hall

    Thom Hall

    24 Kasım 2006