如何从json中提取单个值?

时间:2015-02-13 04:48:19

标签: python json

我正在使用simplejson

try:
    import json
except ImportError:
    import simplejson as json

def query_reviews (query):
    url = "http://......."
    response = urllib2.urlopen(url) 
    values=json.loads(response)

现在我想从输出中取出特定值。

那我怎么能这样做?我已经搜索了很多,但没有解决我的问题。请帮助我。

3 个答案:

答案 0 :(得分:0)

这取决于json格式

如果它是一个数组,这将起作用

try:
import json
import urllib2
except ImportError:
    import simplejson as json

def query_reviews ():
    url = "https://raw.githubusercontent.com/twitter/typeahead.js/gh-pages/data/countries.json"
    response = urllib2.urlopen(url)
    values=json.loads(response.read())
    needle = 'Yemen'
    for value in values:
        if value == needle:
            print 'Found it!'
            print value

query_reviews()

如果是字典使用 值['key']如下:

try:
    import json
    import urllib2
except ImportError:
    import simplejson as json

def query_reviews ():
    url = "https://raw.githubusercontent.com/Bitergia/apache-cloudstack-dashboard/master/data/json/-its-dom-top-closers.json"
    response = urllib2.urlopen(url)
    values=json.loads(response.read())
    print values['id']

query_reviews()

答案 1 :(得分:0)

我完全依赖于您加载的JSON。如果它是一个字典,则将该值导入Python字典。

# JSON is {"game": "pacman", "year": 1988, "highscore": 123456}
print values['highscore']

如果你有一个复杂的层次结构,那将是一个dicts的词典。

# JSON is {"games": {"pacman": {"year": 1988, "highscore": 123456}},
#                   {"defender": {"highscore": 345798, "year": 1983}}, ...
print values['games']['pacman']['highscore']

如果涉及列表,则只需索引。

# JSON is [ {"game": "pacman", "year": 1988, "highscore": 123456},
#           {"game:" "defender", "highscore": 345678", "year": 1983}, ...
print values[0]['highscore']

答案 2 :(得分:0)

其他答案都很好;

可能有所帮助
pprint.pprint(values)  # after 'import pprint'

...这将显示您获得的数据是什么样的。