【问题标题】:Parsing Multiple json elements in python在python中解析多个json元素
【发布时间】:2013-07-19 14:35:40
【问题描述】:

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

这是我正在处理的 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)

【问题讨论】:

    标签: python json api etsy


    【解决方案1】:

    查看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
    

    【讨论】:

    • 所以我可以像这样遍历 dataObject 吗?
    • 一旦你将 JSON 字符串解码为 Python 数据结构(即使用 json.loads()requests.Response.json(),就像你在那里所做的那样),是的,你可以像这样迭代它们 :)
    • 哇,这简直太容易了。哈哈。谢谢您的帮助。我现在已经开始工作了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    相关资源
    最近更新 更多