2017-08-01 107 views
0

我想查询一些返回JSON的数据的Azure AD。我想采取这些数据的一部分,并填写一个Excel表格。我已经检查了很多从JSON转储所有数据到Excel表格(使用xlwt)的例子,但是我如何仅仅为JSON数据的一部分做这些?解析JSON到Excel - 蟒蛇

下面是我使用的脚本:

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的。任何建议来优化此代码也会有所帮助。

谢谢!

+0

请发表[*最小的,完整的,和可核查的例子*](https://开头stackoverflow.com/help/mcve)。所有关于日志记录的内容并要求它完全无关紧要。重要的是样本输入和期望的输出。 –

+0

进行了必要的更改。谢谢。 – Raj

+1

只需将其写入CSV或TXT文件,Excel就可以将其打开。 –

回答

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']) 

    ... 
+0

我upvoted,但字段名应该是'['应用程序名称','应用程序ID'] –

+0

ValueError:dict包含字段不在字段名称:'publisherDomain','allowPublicClient','requiredResourceAccess','api','installedClients ','orgRestrictions','applicationAliases','deletedDateTime','appRoles','keyCredentials','passwordCredentials','createdDateTime','tags','info','web','preAuthorizedApplications' 我觉得它是因为我没有使用'value'中的其他字段。 – Raj

+0

无法解决这件事。现在尝试一种不同的方法。从JSON数据创建一个子字典,并试图将这个字典数据写入一个csv文件。谢谢! – Raj