2017-08-13 123 views
0

我想提取一個特定的列或圖層,不知道你想要調用它..這是一個json對象,我已經轉換爲我認爲是一個分層列表,但我有兩個問題,我的檢查,以查看列表中是否有「返回」,即使打印jsonb時我沒有發現任何東西,我可以看到它在列表中,我的第二個問題是如何從列表中提取某個列層..在這種情況下,我需要第二層數字「43343243」,並將其放入一個變量,我試着用jsonb [「return」] [0]引用它,我得到了一個關鍵錯誤..從json.loads列表中提取數據

我的代碼:

def worker(pairtxt):  
    while (1 < 2):    
     balanceobject = requests.post(urlauth, headers=headers, data=paybytes) 
     json_stringb = str(balanceobject.content, 'utf8') 
     jsonb = json.loads(json_stringb) 
     print(jsonb) 
     if "return" in jsonb: #fails 
      print(jsonb["return"]["0"]) # key error 
      print(jsonb["return"]) # prints everything even layers under the number 

我jsonb打印輸出

{'success': 1, 'return': {'43343243': {'status': 0, 'pair': 'rgeg', 
'type': 'sell', 'amount': 0.01000002, 'rate': 1.0, 
'timestamp_created': 1502642258}}} 
+1

你'jsonb [ 「迴歸」]'只有一個關鍵: '43343243'。它沒有鍵'0'。這就是你得到關鍵錯誤的原因。 – DyZ

回答

1

因爲43343243是一個關鍵的不是一個值,你需要得到回報的關鍵:

jsonb = {'success': 1, 'return': {'43343243': {'status': 0, 'pair': 'rgeg', 'type': 'sell', 'amount': 0.01000002, 'rate': 1.0, 'timestamp_created': 1502642258}}} 
numberWanted = list(jsonb['return'].keys())[0] 
print(numberWanted) # => 43343243 
0

我認爲你正在尋找在輸出jsonb爲列表(這是不正確的)。 jsonb是一本字典。要驗證您可以這樣做:

print(type(jsonb)) 

字典包含鍵值對。 成功是關鍵,1是價值。 返回是一個鍵,值是另一個字典。

{ 
    '43343243': { 
       'status': 0, 
       'pair': 'rgeg', 
       'type': 'sell', 
       'amount': 0.01000002, 
       'rate': 1.0, 
       'timestamp_created': 1502642258 
      } 
} 

如果您要訪問43343243,那麼你可以做jsonb['return']['43343243']