2017-08-13 146 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']