首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django如何将Decimal对象传递给json

Django如何将Decimal对象传递给json
EN

Stack Overflow用户
提问于 2012-11-07 02:17:07
回答 2查看 7.8K关注 0票数 8

我有一个包含Decimal对象的查询集。我想将此数据传递给json转储,如下所示:

代码语言:javascript
复制
ql = Product.objects.values_list('length', 'width').get(id=product_id)
data = simplejson.dumps(ql)

TypeError: Decimal('62.20') is not JSON serializable

我应该如何将这些值传递给json。当然,我可以将值转换为字符串-但我猜这不是一个好的解决方案。

任何帮助都非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-07 03:19:02

Django已经包含了一个可以处理小数的编码器,以及datetimes:django.core.serializers.json.DjangoJSONEncoder。只需将其作为cls参数传递即可:

代码语言:javascript
复制
data = simplejson.dumps(ql, cls=DjangoJSONEncoder)
票数 23
EN

Stack Overflow用户

发布于 2012-11-07 02:42:11

这是我在这个问题上找到的答案:Python JSON serialize a Decimal object

对json.JSONEncoder进行子类化怎么样?

类DecimalEncoder(simplejson.JSONEncoder):def _iterencode(self,o,markers=None):如果isinstance(o,decimal.Decimal):#想要在下一行中有一个简单的输出字符串(O),#但这意味着在使用super(...),#这一行上有一个输出(...),这将不起作用(参见下面的注释),所以...._iterencode(字符串( o)表示o in o) return super(DecimalEncoder,self)._iterencode(o,markers)

在您的例子中,您可以这样使用它:

代码语言:javascript
复制
data = simplejson.dumps(ql, cls=DecimalEncoder)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13256909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档