第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PythonJSON序列化一個Decimal對象

PythonJSON序列化一個Decimal對象

qq_笑_17 2019-07-06 16:06:24
PythonJSON序列化一個Decimal對象我有一個Decimal('3.9')作為對象的一部分,并希望將其編碼為JSON字符串,該字符串應該如下所示{'x': 3.9}..我不關心客戶端的精確性,所以浮點數(shù)是可以的。有什么好的方法來序列化這個嗎?JSONDecoder不接受Decimal對象,并提前轉換為浮點數(shù){'x': 3.8999999999999999}這是錯誤的,而且將是對帶寬的極大浪費。
查看完整描述

3 回答

?
LEATH

TA貢獻1936條經(jīng)驗 獲得超7個贊

子類如何?json.JSONEncoder?

class DecimalEncoder(json.JSONEncoder):
    def _iterencode(self, o, markers=None):
        if isinstance(o, decimal.Decimal):
            # wanted a simple yield str(o) in the next line,
            # but that would mean a yield on the line with super(...),
            # which wouldn't work (see my comment below), so...
            return (str(o) for o in [o])
        return super(DecimalEncoder, self)._iterencode(o, markers)

然后像這樣使用它:

json.dumps({'x': decimal.Decimal('5.5')}, cls=DecimalEncoder)


查看完整回答
反對 回復 2019-07-06
?
德瑪西亞99

TA貢獻1770條經(jīng)驗 獲得超3個贊

Simplejson 2.1而更高的公司則支持十進制類型:

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

請注意use_decimalTrue默認情況下:

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):

因此:

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

希望這個特性將包含在標準庫中。


查看完整回答
反對 回復 2019-07-06
?
飲歌長嘯

TA貢獻1951條經(jīng)驗 獲得超3個贊

我想讓大家知道,我在運行Python2.6.5的Web服務器上嘗試了MichaPythMarczyk的答案,它運行得很好。但是,我升級到Python2.7,它停止工作了。我試著想出一種編碼十進制對象的方法,這就是我想出來的:

class DecimalEncoder(json.JSONEncoder):
    def default(self, o):
        if isinstance(o, decimal.Decimal):
            return float(o)
        return super(DecimalEncoder, self).default(o)

希望這能幫助那些在Python2.7中遇到問題的人。我測試過了,看起來很好。如果有人注意到我的解決方案中有任何錯誤,或者想出了更好的方法,請告訴我。


查看完整回答
反對 回復 2019-07-06
  • 3 回答
  • 0 關注
  • 1477 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號