JSON输出到Python字典很难理解

2024-09-27 23:21:56 发布

您现在位置:Python中文网/ 问答频道 /正文

不熟悉JSON和Python。我成功地调用并可以使用类似的方法获得输出

def lendbook(currency='xtl'): #GET /lendbook/:currency

    r = requests.get(URL + "/lendbook/" + currency, verify=False)
    rep = r.json()

    return rep

print lendbook()

这些数据打印出来很好,但对于新手来说确实是一笔糊涂账。下面是Python控制台的示例

^{pr2}$

显然,我想格式化日期,事实上只在速率和周期之后。我应该使用什么样的字典循环结构,因为当我使用for循环时,我似乎只返回单词“bids”和“asks”。显然字典里还有另一个结构我不懂?在

非常感谢您的帮助,因为我了解了JSON和Python字典


Tags: 方法jsonfalseurlget字典defrequests
3条回答

使用type()打印数据的类型。这样您就可以知道json中的数据类型,并逐步处理它。在

当您遍历字典时,只使用基本的for循环遍历它的keys。在

将其更改为for key, value in dict.iteritems():。在

>>> obj = {'bids': [1000, 2999], 'asks': [4, 5]}
>>> for key, value in obj.iteritems():
...     print key, value
... 
bids [1000, 2999]
asks [4, 5]
>>> 

似乎您得到的JSON对象包含对象(列表)(即,“bids”和“asks”),所以我想您可能很困惑为什么不访问这些值。 我建议你先弄一个你感兴趣的对象(比如“出价”)

bidsList = rep['bids']

如您所见,“bids”是一个对象列表([]>;>表示)。现在可以迭代。在

^{pr2}$

你可以得到这样的值

>>> for obj in bidsList:
>>>   print obj['timestamp']
....
1405112154.0 
>>>

我建议您创建名为Bids、Asks的类,并在JSON对象中返回您知道的任何其他对象类型。然后您可以访问该对象(rep['theObject'])并创建Bids实例(将json对象传递给它并获取一个实例),这将使您免于所有这些,因为获取对象的逻辑将在类本身中进行。我想说的是更好的设计。在

另外(假设你想坚持这种方法),如果你不想硬编码,假设你想写一个独立于JSON中返回内容的代码。在这种情况下,您可以迭代返回的Dict('rep'),对于迭代中得到的每个对象,检查类型,如果它是Dict本身,则对其执行相同的操作(Iterator over the keys),或者如果它是一个列表,则像我提到的那样进行迭代,否则通过键访问值。在

希望这有帮助!在

相关问题 更多 >

    热门问题