将此事转换为JSON?

时间:2018-05-31 22:04:30

标签: python json wrapper

我在这里使用这个包装器:

https://github.com/mondeja/bittrex_v2

我在这里使用此代码:

b = Bittrex(api_key="myapikey", api_secret="mysecretkey")
ba = b.get_balance()

print (ba)

印刷品(ba)推出: https://pastebin.com/x5AVLDXH(已经很久了)

我如何将其转换为JSON?我知道它需要双引号而不是单引号而且十进制('#')不正确......

或者我如何编辑包装器以使其将其打印到JSON?

谢谢!

1 个答案:

答案 0 :(得分:0)

看起来你打印出一个字典,而不是一个字符串。如果是这样,你绝对不想将其转换为字符串表示形式,然后尝试将该字符串表示转换为JSON字符串。您只想直接将dict编码为JSON。

唯一明显的棘手问题是将Decimal值转换为JSON可以处理的值。你必须决定你想要什么 - 也许只是转换为float,也许转换为float,但也验证你没有失去任何精确度,也许转换为字符串,或者也许甚至转换为一些像{'type': 'decimal.Decimal', 'args': ['0E-8']}这样的特殊事情。您想要哪一个完全取决于您以后如何计划使用JSON。

一旦你决定了你想做什么,这很容易。 json.Encoder的文档有一个示例,说明如何通过将任意迭代器转换为list来支持它们,这很容易适应,比如支持Decimal,将它们转换为{ {1}} S:

float

我没有对你的字典进行过测试,或者经过艰苦的扫描,看看是否有其他奇怪的类型。但如果存在,则按照与class DecimalEncoder(json.Encoder): def default(self, o): if isinstance(o, decimal.Decimal): return float(o) return super().default(o) enc = DecimalEncoder() json_string = enc.encode(big_dict_with_decimals) 相同的方式处理它们。