2017-10-08 64 views
-1

嘿傢伙我想讀取JSON轉儲,但不知道如何讀取像lastTransactionID或NAV嵌套的JSON轉儲。如何閱讀嵌套的JSON轉儲

我也收到屬性錯誤'AccountDetails'對象沒有'get'屬性。

r = accounts.AccountDetails(accountID) 
client.request(r) 
print r.response 
print r.get('lastTransactionID') 
print r.get('NAV') 
print r.get('unrealizedPL') 

{ 
    u'account': 
     { 
     u'trades': [], 
     u'marginCloseoutNAV': u'99999.9998', 
     u'marginUsed': u'0.0000', 
     u'marginCloseoutPositionValue': u'0.0000', 
     u'currency': u'EUR', 
     u'resettablePL': u'-0.0002', 
     u'NAV': u'99999.9998', 
     u'marginCloseoutMarginUsed': u'0.0000', 
     u'openTradeCount': 0, 
     u'marginCallMarginUsed': u'0.0000', 
     u'orders': [], 
     u'openPositionCount': 0, 
     u'positionValue': u'0.0000', 
     u'pl': u'-0.0002', 
     u'financing': u'0.0000', 
     u'pendingOrderCount': 0, 
     u'positions': 
      [ 
        { 
        u'financing': u'0.0000', 
        u'short': 
         { 
         u'units': u'0', 
         u'financing': u'0', 
         u'resettablePL': u'0.0000', 
         u'unrealizedPL': u'0.0000', 
         u'pl': u'0.0000' 
         }, 

        u'commission': u'0.0000', 
        u'unrealizedPL': u'0.0000', 

        u'long': 
         { 
         u'units': u'0', 
         u'financing': u'0.0000', 
         u'resettablePL': u'-0.0002', 
         u'unrealizedPL': u'0.0000', 
         u'pl': u'-0.0002' 
         }, 

        u'instrument': u'AUD_USD', 
        u'resettablePL': u'-0.0002', 
        u'pl': u'-0.0002' 
        } 
      ], 

     u'unrealizedPL': u'0.0000', 
     u'alias': u'Primary', 
     u'createdByUserID': xxx, 
     u'marginCloseoutUnrealizedPL': u'0.0000', 
     u'createdTime': u'2017-05-25T18:26:03.961466233Z', 
     u'balance': u'99999.9998' 
     }, 

     u'lastTransactionID': u'255' 
    } 

有人知道如何從json轉儲中讀取嵌套元素嗎? 感謝您的幫助提前

+0

請正確格式化你的JSON有效載荷。現在很難閱讀。 – glenfant

+0

並提供更多的上下文。什麼是AccountDetails類?什麼是「客戶端」對象「(...) – glenfant

回答

0

您可以使用JSON模塊是:

import json 

a = json.load(string_or_file_with_json) 
# Now in a you have a dict, that represents json object 
# You can write a simple recursive function, that will do something on every entry or smt like that 
def do(json_dict): 
    for k, v in json_dict.items(): 
     # !UPDATE, use isinstance(v, dict) instead of v is dict 
     # Thx mister in comments 
     if isinstance(v, dict): # if v is dict, than it's a nested json object 
      do(x) 
     else: # else it specific value 
      your_action(k, v) 
+1

使用'isinstance(obj,type)'而不是'obj is type'。 –