十进制转JSON

10 投票
4 回答
19100 浏览
提问于 2025-04-16 06:05

我从数据库中提取了一个小数值的总和。
我想在一个JSON结果中使用这个值。

json.dumps( { 'sum': amount } ) #where amount is my Decimal

Django无法直接把Decimal类型转换成JSON格式。
我可以把它转换成字符串,但我希望在JSON中保留数字类型。
如果我尝试把它转换成float类型,结果就会出现超过两位小数的情况。

如果可能的话,应该怎么做才能得到下面这样的结果呢?

{ 'sum': 500.50 }

4 个回答

0

十进制数可以转换成浮点数,JavaScript会知道怎么处理这个浮点数。

json.dumps( { 'sum': float(amount) } )
0

来自这个链接:http://code.google.com/p/simplejson/issues/detail?id=34

我可以告诉你三种解决方案:

你可以在第一个链接中找到更多详细信息。

12

你可以扩展 JSONDecoder 类,来为 Decimal 类型提供一个自定义的序列化器,类似于这个文档中的例子:http://docs.python.org/py3k/library/json.html

>>> import json
>>> class DecimalEncoder(json.JSONEncoder):
...     def default(self, obj):
...         if isinstance(obj, Decimal):
...             return "%.2f" % obj
...         return json.JSONEncoder.default(self, obj)
...

这只是一个不完整的例子,希望能给你一个好的起点。

撰写回答