繁体   English   中英

如何在while循环中合并JSON

[英]How to merge JSON in while loop

我有一个 while 循环,用于从 API 获取 JSON 响应。 这是我的代码。

import json
import requests
import pandas as pd

url = "https://org.zendesk.com/api/v2/tickets?sort_by=created_at"

payload = ""
headers = {
    'Authorization': "Basic blablabla"
    }
params="page[size]=3"

while url:
    response = requests.request("GET", url, data=payload, headers=headers, params=params)
    data = response.json()

    #get only tickets array and drop everything else
    dataTickets = json.dumps(data['tickets'],indent=2)
    #print(dataTickets)

    #get next page of data
    url = data['links']['next']

每个循环都给了我以下内容。

[
    {'url': 'https://org.zendesk.com/api/v2/tickets/4025.json'},
    {'url': 'https://org.zendesk.com/api/v2/tickets/4026.json'},
    {'url': 'https://org.zendesk.com/api/v2/tickets/4027.json'}
]

如何合并每个循环运行(在循环内)以获取合并数组,如下所示:

[
    {'url': 'https://org.zendesk.com/api/v2/tickets/4025.json'},
    {'url': 'https://org.zendesk.com/api/v2/tickets/4026.json'},
    {'url': 'https://org.zendesk.com/api/v2/tickets/4027.json'},
    {'url': 'https://org.zendesk.com/api/v2/tickets/4028.json'},
    {'url': 'https://org.zendesk.com/api/v2/tickets/4029.json'},
    {'url': 'https://org.zendesk.com/api/v2/tickets/4030.json'},
    {'url': 'https://org.zendesk.com/api/v2/tickets/4031.json'},
    {'url': 'https://org.zendesk.com/api/v2/tickets/4032.json'},
    {'url': 'https://org.zendesk.com/api/v2/tickets/4033.json'}
]

我想我明白了。 我的做法略有不同。

  1. 我正在处理合并“tickets”数组的完整请求。
  2. 合并后,我只取出“票”并打印出来。 这有助于我以后只操纵门票。

一个请求循环中的数据如下所示:

{
  "tickets": [
    {
      "url": "https://org.zendesk.com/api/v2/tickets/3058.json"
    },
    {
      "url": "https://org.zendesk.com/api/v2/tickets/3059.json"
    }
  ],
  "next_page": "https://org.zendesk.com/api/v2/tickets.json?page=2",
  "previous_page": null,
  "count": 3234
}
import json
import requests
import pandas as pd

url = "https://org.zendesk.com/api/v2/tickets?sort_by=created_at"

payload = ""
headers = {
    'Authorization': "Basic blablabla"
    }
params="page[size]=3"

while url:
    response = requests.request("GET", url, data=payload, headers=headers, params=params)
    data = response.json()

    #merge (extend) tickets array for every loop
    data["tickets"] += data["tickets"]

    #get next page of data
    url = data['links']['next']

# Format the merged JSON and take out just the tickets array
dataout =  json.dumps(data["tickets"],indent=2)

# Write formatted JSON into file
with open('tickets1.json', 'w') as f:
   f.write(dataout)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM