在Python中打印JSON值

时间:2014-02-18 06:16:41

标签: json python-2.7

我通过谷歌在这里和其他地方搜索了大量文章,并在docs.python.org上阅读了一些相关的文档,但仍然卡住了。

我从以下API获得回复:

{"status":"active","perms":1,"data":{"40332895":{"user_values":{"delta":-203,"value":53.32,"order":42509}}}}

打印'状态'或'数据'没问题。但是,我所能抓取的只是* user_values *的名称,而不是其中的日期。

长期坚持下去,并希望有人能指出我正确的方向。相当新的Python,如果我需要改变我的方式,因为这是不好的做法,或者有一种更简单的方法来获得我想要的结果,请告诉我。

代码:

import json
import urllib2

url = urllib2.urlopen('http://URLofAPI.com')
json_url = json.load(url)

api_result = json_url

for doc in api_result['data']['40332895']['user_values']:
    print doc

输出:
三角洲

为了

我真正想要的是它们的价值(即:' - 203','53 .32','42509')。

我基本上试图将这些数据保存到list \ dict中(单独或单独),然后将其与其他数据一起打印。我尝试了各种各样的东西,无法管理它。我确信这可能是我想念的超级简单的东西,但它让我疯狂。 :)

另外,我真的希望下面给我'42509',但是我收到了一个错误:

for doc in api_result['data']['40332895']['user_values']['order']

提前致谢!

2 个答案:

答案 0 :(得分:2)

您要求输入user_values字典的密钥并获取它们。试试这个:

uv = api_result['data']['40332895']['user_values']
for doc in uv:
    print uv[doc]

答案 1 :(得分:1)

在您的示例中,api_result['data']['40332895']['user_values']是一个字典。 如果您遍历字典,您将获得密钥。在您的原始示例和mgkrebbs答案中就是这种情况。 但是,如果迭代字典的.iteritems()(或.items()),则会得到元组中的(键,值)对:

uv = api_result['data']['40332895']['user_values']
for key,value in uv.iteritems():
    print key, value

如果您只需要值,则迭代.itervalues()

uv = api_result['data']['40332895']['user_values']
for value in uv.itervalues():
    print value

或者,如果您只需要将值作为列表:

my_list = api_result['data']['40332895']['user_values'].values()

.itervalues()和.values()之间的区别在于前者为您提供了一个可迭代(一次返回一个值,但不在内存中创建结构的对象),而后者为您提供了列表。