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ÅŸ:
Sınıf JSON seri hale getirilebilir nas...
Dize seri hale getirmek için nesne...
Nasıl üstesinden gelmek için "dat...
Nasıl bir dize içine bir nesne seri ha...
Seri hale getirmek dize JavaScript/jQu...