Преобразовать эту вещь в JSON? - PullRequest
0 голосов
/ 01 июня 2018

Я использую эту обертку здесь:

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 голосов
/ 01 июня 2018

Похоже, вы распечатали дикт, а не строку.Если это так, то вы определенно не хотите преобразовывать его в его строковое представление, а затем пытаться преобразовать это строковое представление в строку JSON.Вы просто хотите закодировать dict непосредственно в JSON.

Единственный очевидный хитрый бит - это преобразование значений Decimal в то, что JSON может обработать.Вы должны решить, что вы хотите - возможно, просто конвертировать в float, возможно конвертировать в float, но также убедиться, что вы не теряете никакой точности при этом, возможно конвертировать в строку или, возможно, даже конвертировать в какой-то особый маринадиная вещь, как {'type': 'decimal.Decimal', 'args': ['0E-8']}.Какой из них вам нужен, полностью зависит от того, как вы планируете использовать JSON позже.

Как только вы определились с тем, что хотите сделать, это довольно легко.Документы для json.Encoder содержат пример, показывающий, как поддерживать произвольные итераторы путем преобразования их в list s, что довольно легко адаптировать, скажем, для поддержки Decimal s путем преобразования их в float s:

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)

Я не проверял ваш диктант и не пробовал тщательно проверять, есть ли другие странные типы.Но если есть, вы обращаетесь с ними так же, как Decimal.

...