2017-08-13 8 views
0

特定の列またはレイヤーを抽出しようとしていますが、これを呼び出す対象がわかりません。これはjsonオブジェクトの内部にあり、私は2つの問題を抱えていますが、 "return"がリストに含まれているかどうかを確認するには、jsonbを印刷するときにリストにあることがわかります。この場合、2番目のレイヤーから "43343243"という数字が必要で、変数に入れています。jsonb ["return"] [0]で参照しようとしましたが、キーエラーが発生しました..json.loadsリストからデータを抽出しています

My code :

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 [ "復帰"]は' 1つのキーだけ持って行うことができます: '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']

関連する問題