我试图否决simplejson的默认编码器。我试过两种方法。在
使用cls:
class ExtendedJSONEncoder(simplejson.JSONEncoder):
def default(self, obj):
if isinstance(obj, float):
return '{0:.8f}'.format(obj)
return super(ExtendedJSONEncoder, self).default(obj)
def save_signal(self, signal):
with open('test.json', 'w') as outfile:
outfile.write(simplejson.dumps(signal, cls=ExtendedJSONEncoder))
使用默认值:
^{pr2}$在这两种情况下都不调用扩展的JSONEncoder。在
这是我正在处理的数据的一个例子。在
signal = {
'pair': 'BTC-XRP',
'term': None,
'exchange': None,
'entry_min': 8.5e-05,
'entry_max': None,
'stop_loss': None,
'targets': [9.4e-05, 0.000105, 0.000118],
'risk': 'medium',
'strategy': 'targets',
'enabled': True,
'test_mode': False,
'msg_id': 214,
'msg_timestamp': '2018-03-05 20:01:52',
'channel_id': '1234',
'channel_name': 'realtime_sig'
}
有人能帮我解决这个令人恼火的问题吗?在
不要通过猴子修补
JSONEncoder
类来重写default
编码器函数。如你所见,那不会有任何效果。相反,请将适当的函数传递给dump()
或dumps()
。在下面是一个演示:
一个不推荐的替代方法是子类
^{pr2}$JSONEncoder
,并通过cls
参数将结果类传递给dumps()
。在相关问题 更多 >
编程相关推荐