谢了。下面是我的代码。看起来dumps()甚至没有进入专用编码器。
clayton@mserver:~/python> cat test1.py
import json, decimal
class DecimalEncoder(json.JSONEncoder):
def _iterencode(self, o, markers=None):
print "here we go o is a == ", type(o)
if isinstance(o, decimal.Decimal):
print "woohoo! got a decimal"
return (str(o) for o in [o])
return super(DecimalEncoder, self)._iterencode(o, markers)
z = json.dumps( {'x': decimal.Decimal('5.5')}, cls=DecimalEncoder )
print z
clayton@mserver:~/python> python test1.py
Traceback (most recent call last):
File "test1.py", line 11, in <module>
z = json.dumps( {'x': decimal.Decimal('5.5')}, cls=DecimalEncoder )
File "/home/clayton/python/Python-2.7.3/lib/python2.7/json/__init__.py", line 238, in dumps
**kw).encode(obj)
File "/home/clayton/python/Python-2.7.3/lib/python2.7/json/encoder.py", line 201, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/home/clayton/python/Python-2.7.3/lib/python2.7/json/encoder.py", line 264, in iterencode
return _iterencode(o, 0)
File "/home/clayton/python/Python-2.7.3/lib/python2.7/json/encoder.py", line 178, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: Decimal('5.5') is not JSON serializable
clayton@mserver:~/python>
它不(不再)建议您创建子类;json.dump()
和json.dumps()
函数采用default
函数:
def decimal_default(obj):
if isinstance(obj, decimal.Decimal):
return float(obj)
raise TypeError
json.dumps({'x': decimal.Decimal('5.5')}, default=decimal_default)
演示:
>>> def decimal_default(obj):
... if isinstance(obj, decimal.Decimal):
... return float(obj)
... raise TypeError
...
>>> json.dumps({'x': decimal.Decimal('5.5')}, default=decimal_default)
'{"x": 5.5}'
您找到的代码只在Python 2.6上工作,并且重写了一个在以后的版本中不再调用的私有方法。
问题内容: 我有一个包含一些小数的python对象。这导致json.dumps()中断。 我从SO获得了以下解决方案(例如PythonJSON序列化Decimal对象),但是重新组合的解决方案仍然无法正常工作。Python网站-具有完全相同的答案。 有什么建议可以使这项工作吗? 谢谢。下面是我的代码。看起来dumps()甚至都没有进入专门的编码器。 问题答案: 不(不再)建议您创建一个子类。的和函
所以我有一个带有一些字段的对象。。。 将其序列化为JSON,如下所示: 稍后,当我需要读取这个json文件时,我尝试这样做: 我得到的错误是: 文件中的JSON是大意如下的东西: 当它试图导入主机的ArrayList时,它似乎会窒息,但它能够毫无问题地将它们写出来。 有谁能给我一些建议,让我的导入工作没有问题吗?
本文向大家介绍Python中的十进制到二进制列表转换,包括了Python中的十进制到二进制列表转换的使用技巧和注意事项,需要的朋友参考一下 Python是一种通用语言,可以处理数据处理过程中提出的许多要求。当我们需要将十进制数转换为二进制数时,可以使用以下python程序。 使用格式 我们可以使用格式化程序中的字母来表示哪个数字基:十进制,十六进制,八进制或二进制,我们希望对数字进行格式化。在下面
两周以来,我一直在努力和阅读来解决这个问题,但我尝试的一切都没有奏效:-( 我正在使用python 2.7。 据我所知,我确实有一个base64字符串,格式如下: 我想把它转换成十六进制字符串。00000000194BD636AEDEAE4C9827C9465288D7F40700BA89A9BA12E1314B81606DB385F3B7B100000074656E0000BA89A9BA12E
问题内容: 我有一些二进制数据,它们在Python中是字节字符串数组的形式。 是否有一种可移植的方式来序列化其他语言可以读取的数据? JSON丢失了,因为我刚刚发现它没有存储二进制数据的真正方法。其字符串应为Unicode。 我不想使用,因为我不想存在安全风险,因此将其限制在其他Python程序中使用。 有什么建议吗?我真的很想使用内置库(或至少是标准Anaconda发行版中的一个库)。 问题答案
我想做一个java程序,用户输入一个十进制数,然后它转换成二进制。这是我到目前为止所拥有的,但是当我输入8时,虽然循环只循环一次,只给我0。我知道二进制中的8是1000,所以我不明白我做错了什么。我需要代码变得简单。请帮忙谢谢