如何在Python中迭代“无名”JSON条目?

时间:2016-03-12 04:07:38

标签: python json api rest hubspot

我有一些来自HubSpot CRM API的JSON数据,doing some pagination using Python Code基本上看起来像这样:

[
  {
    "dealId": 18039629,
    "portalId": 62515,
    "isDeleted": false
  },
  {
    "dealId": 18040854,
    "portalId": 62515,
    "isDeleted": false
  }
]

......现在我想做的是:

1)一次读取一组“JSON”(意思是dealId,portalId,isDeleted)
2)如果isDeleted==false,则抓住dealIdportalId并存储在变量中 3)使用上面#2中的变量构建一个URL字符串,该字符串可用于返回HubSpot API并获取有关每笔交易的信息(此API端点为https://api.hubapi.com/deals/v1/deal/23487870?hapikey=demo(其中23487870为来自上述JSON的dealId
4)将单个交易级别信息合并到另一组JSON中。具体来说,我想从JSON中抓取/properties/dealname/valueproperties/dealstage/value,如下所示:

{
    "portalId": 62515,
    "dealId": 23487870,
    "isDeleted": false,
    "properties": {
        "dealname": {
            "value": "AutomationTestUser-national",
            "timestamp": 1457692022120
        },
        "dealstage": {
            "value": "appointmentscheduled",
            "timestamp": 1457692022120
        }
    },
    "imports": []
}

5)然后在JSON中输出最终结果:

{
    "deals":
    [
        {
            "portalId": 62515,
            "dealId": 23487870,
            "isDeleted": false,
            "properties": {
                "dealname": {
                    "value": "AutomationTestUser-national",
                    "timestamp": 1457692022120
                },
                "dealstage": {
                    "value": "appointmentscheduled",
                    "timestamp": 1457692022120
                }
            },
            "imports": []
        },
        {
            "portalId": 62515,
            "dealId": 23487871,
            "isDeleted": false,
            "properties": {
                "dealname": {
                    "value": "AutomationTestUser-regional",
                    "timestamp": 1457692022120
                },
                "dealstage": {
                    "value": "appointmentscheduled",
                    "timestamp": 1457692022120
                }
            },
            "imports": []
        }
    ]
}

...所有在Python中。

任何帮助?

1 个答案:

答案 0 :(得分:1)

import json
output = {"deals": []}

data = """
[
  {
    "dealId": 18039629,
    "portalId": 62515,
    "isDeleted": false
  },
  {
    "dealId": 18040854,
    "portalId": 62515,
    "isDeleted": false
  }
]
"""

j = json.loads(data)
for deal in j:
    if deal['isDeleted']:
        continue              # Ignore if deleted
    dealId = deal['dealId']
    url = 'https://api.hubapi.com/deals/v1/deal/' + str(dealId) + '?hapikey=demo' # Construct new url here
    data = getSource(url) # implement getSource to perform web request and get data
    j2 = json.loads(data)
    output['deals'].append(j2)

print(output)