【问题标题】:Python code to Download Specific JSON key value data through REST API calls通过 REST API 调用下载特定 JSON 键值数据的 Python 代码
【发布时间】:2021-08-17 02:21:11
【问题描述】:

我正在尝试用 python 编写代码,它只下载调用中的特定键值。

所以解决办法可能是

  1. 下载原始数据,然后通过正则表达式删除不需要的数据或 2) 在 API 调用中应用特定进程,它只下载并附加“值”。

注意 - 不包括 access_token 的代码。

邮递员的基本代码是

url = "https://xyz-stg.csod.com/services/api/x/odata/api/views/vw_rpt_performance_comment"

payload={}
headers = {
  'Authorization': 'Bearer ' + access_token,
  'Cookie': 'ASP.NET_SessionId=hsylq0qqp; Cookie_2=value'
}

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

print(response, file=open(r"C:\Users\path\Desktop\Python script\output.json", 'w', encoding='utf-8', errors='ignore'))


while response['@odata.nextLink']:
    url = response['@odata.nextLink']
    response = requests.request("GET", url, headers=headers, data=payload).json()
    #response.extend(response)


    print(response, file=open(r"C:\Users\path\Desktop\Python script\output.json", 'a', encoding='utf-8', errors='ignore'))
    break

原始 json 输出数据

*{ "@odata.context": "https://example.com/services/api/x/odata/api/views/$metadata#vw_rpt_review_response_comment", "value": [ { "pr_comment_id": 1, "pr_comment": "Test Comment" }, { "pr_comment_id": 2, "pr_comment": "Test Comment" }, { "pr_comment_id": 3, "pr_comment": "Test Comment" } ],
"@odata.nextLink": "https://example.com/services/api/x/odata/api/views/$metadata#vw_rpt_review_response_comment?$skip=1000"
} { "@odata.context": "https://example.com/services/api/x/odata/api/views/$metadata#vw_rpt_review_response_comment", "value": [ { "pr_comment_id": 4, "pr_comment": "Test Comment" }, { "pr_comment_id": 5, "pr_comment": "Test Comment" }, { "pr_comment_id": 6, "pr_comment": "Test Comment" } ],
"@odata.nextLink": "https://example.com/services/api/x/odata/api/views/$metadata#vw_rpt_review_response_comment?$skip=2000"
}*

Beautify json

要求的输出

*{ "value": [ { "pr_comment_id": 1, "pr_comment": "Test Comment" }, { "pr_comment_id": 2, "pr_comment": "Test Comment" }, { "pr_comment_id": 3, "pr_comment": "Test Comment" } , { "pr_comment_id": 4, "pr_comment": "Test Comment" }, { "pr_comment_id": 5, "pr_comment": "Test Comment" }, { "pr_comment_id": 6, "pr_comment": "Test Comment" } ]
}*

Beautify json

【问题讨论】:

    标签: python json api


    【解决方案1】:

    当您的个人回复通过时,您可以使用extend(相对于append)创建一个值列表。然后创建你的最终字典。

    这是一种实现方式的模型 - 收集所有响应,然后遍历列表。否则,您可以在每个响应进入时对其进行解析。

    response1 = { "@odata.context": "https://example.com/services/api/x/odata/api/views/$metadata#vw_rpt_review_response_comment", "value": [ { "pr_comment_id": 1, "pr_comment": "Test Comment" }, { "pr_comment_id": 2, "pr_comment": "Test Comment" }, { "pr_comment_id": 3, "pr_comment": "Test Comment" } ],
    "@odata.nextLink": "https://example.com/services/api/x/odata/api/views/$metadata#vw_rpt_review_response_comment?$skip=1000"
    } 
    
    response2 = { "@odata.context": "https://example.com/services/api/x/odata/api/views/$metadata#vw_rpt_review_response_comment", "value": [ { "pr_comment_id": 4, "pr_comment": "Test Comment" }, { "pr_comment_id": 5, "pr_comment": "Test Comment" }, { "pr_comment_id": 6, "pr_comment": "Test Comment" } ],
    "@odata.nextLink": "https://example.com/services/api/x/odata/api/views/$metadata#vw_rpt_review_response_comment?$skip=2000"
    }
    
    value_list = []
    for resp in [response1, response2]:
        # print(resp['value'])
        value_list.extend(resp['value'])
    
    my_dict = {'value': value_list}
    my_dict
    

    输出

    {'value': [{'pr_comment_id': 1, 'pr_comment': 'Test Comment'},
      {'pr_comment_id': 2, 'pr_comment': 'Test Comment'},
      {'pr_comment_id': 3, 'pr_comment': 'Test Comment'},
      {'pr_comment_id': 4, 'pr_comment': 'Test Comment'},
      {'pr_comment_id': 5, 'pr_comment': 'Test Comment'},
      {'pr_comment_id': 6, 'pr_comment': 'Test Comment'}]}
    

    【讨论】:

    • 感谢您的回复,现在我编写了一个脚本,它将整个 API 数据以类似的格式保存到一个 json 文件中 resp0 = { data } resp1 = { data } resp2 = { data } 等等..现在我被困在如何执行您从 json 文件中提供的 python 脚本请帮助@Jonathan leon
    • 开始一个特定于问题的新问题。这是如何从文件中解析 json 并在文件中给出结构的方法。有很多关于如何读取和解析文件的示例。谢谢。
    • 感谢您的回复@Jonathan Leon,请找到问题。 stackoverflow.com/q/67766448/15945458
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 2014-03-26
    相关资源
    最近更新 更多