检索JSON数据时Python中的KeyError

时间:2019-10-15 19:35:51

标签: python json

我创建了一个Python脚本来从加密货币交易所获取未结订单。

当我使用以下方法连接到api时:

let inline tryParse text = 
    let mutable r = Unchecked.defaultof<_>
    (^a : (static member TryParse: string * ^a byref -> bool) (text, &r)), r 

let inline tryParseWithDefault (defaultVal:'a) text =
    match tryParse text with 
    | true, v -> v
    | _ -> defaultVal

我收到此回复:

order = exchange.fetch_open_orders(symbol)

这是一个很长的响应,我不希望这里有任何内容,仅打印一些值,我尝试过这样:

[{'info': {'symbol': 'ETHBTC', 
            'orderId': 507325551, 'orderListId': -1, 'clientOrderId': 
            'web_b75c7f9be90849beac14cd86f575ac01', 'price': '0.02504200', 
            'origQty': '0.02100000', 'executedQty': '0.00000000', 
            'cummulativeQuoteQty': '0.00000000', 'status': 'NEW', 
            'timeInForce': 'GTC', 'type': 'LIMIT', 'side': 'SELL', 
            'stopPrice': '0.00000000', 'icebergQty': '0.00000000', 
            'time': 1571163346981, 'updateTime': 1571163346981, 'isWorking': True}, 
            'id': '507325551', 'timestamp': 1571163346981, 'datetime': '2019-10-15T18:15:46.981Z', 
            'lastTradeTimestamp': None, 
            'symbol': 'ETH/BTC', 'type': 'limit', 
            'side': 'sell', 'price': 0.025042, 
            'amount': 0.021, 'cost': 0.0, 'average': None, 'filled': 0.0, 
            'remaining': 0.021, 'status': 'open', 'fee': None, 'trades': None}]

此代码一直有效,直到我得到for x in order: sym = x['symbol'] price = x['price'] status = x['status'] amount = x['amount'] side = x['side'] orig = x['origQty'] print(sym, price, status, amount, side, orig) 的第orig = x['origQty']行为止。

我不知道这是哪里来的,因为所有其他变量都没有错误地打印,并且因为响应中KeyError: 'origQty' ,而当我尝试时通常会出现此错误寻找不存在的东西。 有人可以帮我找出我在做错什么吗?

2 个答案:

答案 0 :(得分:1)

'origQty'嵌套在'info'键下,请尝试使用x['info']['origQty']

答案 1 :(得分:1)

您会看到您的词典有一个内部词典,其中包含origQty

所以 orig = x['info']['origQty']

更新

检查this,我认为它将在可视化方面变得更加清晰:)