Python dict将小数转换成JSON

2024-06-08 03:04:38 发布

您现在位置:Python中文网/ 问答频道 /正文

Possible Duplicate:
Python JSON serialize a Decimal object

任务:将包含混合数据类型(integer/strint/decimal/…)的dict转换为JSON数组。在

我知道如何将python dict转换为JSON:

D = {key1:val1, key2,val2}
import json
jD = json.dumps(D)

我还知道decimal值必须转换成字符串,否则python将抛出错误“decimal is not json serializable”。在

所以我需要遍历dict来查找数据类型。在

^{pr2}$

但这种编程涉及手工编码和硬编码。在

如果我得到一个嵌套的字典结构,同样需要硬编码(这是错误的)。在

有没有其他方法/技巧可以从dict中的任何数据类型获取JSON数组?在


Tags: json编码object错误integer数组serializedict
2条回答

注意,JSON不能表示小数,只能表示浮点和字符串。因此,您应该将小数转换为字符串,如下所示:

keys_for_json = {str(k):v for k,v in keys.items()}

为什么不将JSONEncoder子类化呢?简单明了:

class DecimalEncoder(json.JSONEncoder):
    def _iterencode(self, o, markers=None):

        if isinstance(o, decimal.Decimal):  # isinstance() is better than type(), because it handles inheritance
            return (str(o) for o in [o])

        return super(DecimalEncoder, self)._iterencode(o, markers)

相关问题 更多 >

    热门问题