Jsonify yöntemini çoğunlukla sözlükleri Json'a dönüştürmek için çok kullandığım Flask kullanarak bir web sitesi yapıyorum.Python veri yapısındaki tüm Decimals'lar dizgiye nasıl dönüştürülür?
sorun Decimals Ben de çok Ondalıklar kullanın ve maalesef jsonify işlem yapamadığı artık şudur:
=== (a long stacktrace preceding this) ===
File "/usr/local/lib/python2.7/dist-packages/flask/json.py", line 83, in default
return _json.JSONEncoder.default(self, o)
File "/usr/lib/python2.7/json/encoder.py", line 184, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: Decimal('1') is not JSON serializable
Bu yüzden bir yöntem gibi içinde jsonify kaydırmak istedi:
jsonify({'a': Decimal('1')})
yol açar Bu:
def myOwnJsonify(item):
if isinstance(item, Decimal):
return flask.jsonify(str(item))
else:
return flask.jsonify(item)
Maalesef bu, içinde bulunan Decimals'ı dönüştürmez bir dict veya liste.
Veri yapısını güvenli bir şekilde json'a dönüştürebilmem için python veri yapısı içindeki tüm ondalık sayıları (bir liste, bir dict, tuple vb.) Bir dizeye nasıl dönüştürebilirim? Eğer uygulama örneğinde json_encoder
niteliğini ayarlayarak uygulamanın JSON kodlayıcı geçersiz kılabilir
Belki de en iyi yol değil, bunun yerine "Decimal" alt sınıfını yapıp istediğinizi elde etmek için '__repr__' yöntemini geçersiz kılamadınız mı? –