代码之家  ›  专栏  ›  技术社区  ›  Justin

十进制到JSON[重复]

  •  9
  • Justin  · 技术社区  · 15 年前

    我试图在JSON结果中使用该值

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

    Django无法序列化 Decimal . 我可以将其转换为字符串,但我希望在JSON中使用数字类型。 float 我最后得到了两个以上的小数位。

    如果可能的话,需要发生什么才能得到如下结果?

    { 'sum': 500.50 }
    
    4 回复  |  直到 11 年前
        1
  •  11
  •   Jerub    15 年前

    您可以做的是扩展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)
    ...
    

    这是一个不起作用的例子如何做到这一点,希望是一个很好的起点为你。

        2
  •  0
  •   mouad    15 年前

    http://code.google.com/p/simplejson/issues/detail?id=34 .

    你可以在第一个链接中找到更多的细节。

        3
  •  0
  •   Tim Cooper    12 年前

    Decimal可以转换为一个float,javascript知道如何处理这个float

    json.dumps( { 'sum': float(amount) } )
    
        4
  •  -1
  •   knitti freethinker    15 年前