解析python中的多个json元素

时间:2013-07-19 14:35:41

标签: python json api etsy

我正在尝试构建一个小脚本,它将通过Etsy API并检索某些信息。 API在json中返回25个不同的列表,如果有人可以帮我学习如何一次处理一个,我将不胜感激。

这是我正在处理的json的一个例子:

{"count":50100,"results":[{"listing_id":114179207,"state":"active"},{"listing_id":11344567,"state":"active"},

等等。

是否有一种简单的方法可以同时处理其中一个列表,以最大限度地减少我必须对API进行的调用量?

以下是一些代码,当我将结果限制为1时,我只处理一个代码:

r = requests.get('http://openapi.etsy.com/v2/listings/active?api_key=key&limit=1&offset='+str(offset_param)+'&category=Clothing')
raw_json = r.json()
encoded_json = json.dumps(raw_json)
dataObject = json.loads(encoded_json)
if dataObject["results"][0]["quantity"] > 1:
    if dataObject["results"][0]["listing_id"] not in already_done:
        already_done.append(dataObject["results"][0]["listing_id"])
        s = requests.get('http://openapi.etsy.com/v2/users/'+str(dataObject["results"][0]["user_id"])+'/profile?api_key=key')
        raw_json2 = s.json()
        encoded_json2 = json.dumps(raw_json2)
        dataObject2 = json.loads(encoded_json2)

        t = requests.get('http://openapi.etsy.com/v2/users/'+str(dataObject["results"][0]["user_id"])+'?api_key=key')
        raw_json3 = t.json()
        encoded_json3 = json.dumps(raw_json3)
        dataObject3 = json.loads(encoded_json3)

1 个答案:

答案 0 :(得分:0)

看到results字段(或键)如何包含列表结构,您可以像下面这样简单地迭代它

json_str = { ...other key-values, "results": [{"listing_id":114179207,"state":"active"},{"listing_id":11344567,"state":"active"}, ...and so on] }
results = json_str['results']  # this gives you a list of dicts

# iterate through this list
for result in results:
    if result['state'] == 'active':
        do_something_with( result['listing_id']
    else:
        do_someotherthing_with( result['listing_id']  # or none at all