将JSON解析为Excel - Python

时间:2017-08-01 18:27:39

标签: python json excel parsing dictionary

我正在尝试向Azure AD查询返回JSON的一些数据。我想获取这些数据的一部分并填写excel表。我已经检查了许多将JSON中的所有数据转储到excel表(使用xlwt)的示例,但是我如何仅针对JSON数据的某些部分执行此操作?

这是我正在使用的脚本:

import requests 

def get_application_list():
    application_list_response = requests.get("https://graph.microsoft.com/beta/applications", verify=False,
                                             headers={"Authorization": "Bearer" + access_token})

    application_list_response_json = application_list_response.json()

    for item in application_list_response_json['value']:
        print("Application Name:", item['displayName'])
        print("Application ID:", item['id'])

get_application_list()

我想在Excel工作表中获取应用程序名称和应用程序ID。样本输出:

enter image description here

P.S:我对Python很新。任何优化此代码的建议也会有所帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

只需将其另存为CSV文件,然后即可在M $ Excel中打开。

import csv
import requests 

def save_application_list(target_file):
    application_list_response = requests.get("https://graph.microsoft.com/beta/applications", verify=False,
                                             headers={"Authorization": "Bearer" + access_token})

    application_list_response_json = application_list_response.json()

    with open(target_file, 'w') as fp:
        writer = csv.DictWriter(fp, ['displayName', 'id'])
        writer.writeheader()
        writer.writerows(application_list_response_json['value'])

save_application_list('/path/to/your/saved/file.csv')

更新

要将字段名称更改为['Application Name', 'Application ID'],只需将writer.writeheader()更改为writerow(),如下所示:

def save_application_list(target_file):

    ...
    with open(target_file, 'w') as fp:
        writer = csv.DictWriter(fp, ['displayName', 'id'])
        writer.writerow({
            'displayName': 'Application Name',
            'id': 'Application ID'
        })
        writer.writerows(application_list_response_json['value'])
    ...

更新2:

由于JSON文件中有其他字段无需保留,因此代码可以是这样的:

def save_application_list(target_file):

    ...
    with open(target_file, 'w') as fp:
        writer = csv.DictWriter(fp, ['Application Name', 'Application ID'])
        writer.writeheader()
        writer.writerows({
            'Application Name': item['displayName'],
            'Application ID': item['id']
        } for item in application_list_response_json['value'])

    ...