2017-08-01 19 views
0

JSONを返すデータをAzure ADに照会しようとしています。私はこのデータの一部をとり、Excelシートを記入したいと思います。私はJSONからExcelシート(xlwtを使用)にすべてのデータをダンプする多くの例を確認しましたが、JSONデータの一部だけではどうすればよいですか?ここでJSONをExcelに解析する - Python

は、私が使用しているスクリプトです:

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

更新:

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:

ちょうどこのようwriterow()writer.writeheader()を変更、['Application Name', 'Application ID']にフィールド名を変更するにはあなたは維持する必要はなかった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

フィールド名は '['Application Name'、 'Application ID'] ' –

+0

でなければなりませんValueError:dictにフィールド名に' publisherDomain '、' allowPublicClient '、' requiredResourceAccess '、' api '、' installedClients '、' orgRestrictions '、' applicationAliases '、' deletedDateTime '、' appRoles '、' keyCredentials '、' passwordCredentials '、' createdDateTime '、' tags '、' info '、' web '、' preAuthorizedApplications ' 私はそれだと思います私は '値'から他のフィールドを使用していないためです。 – Raj

+0

この作品は解決できません。今、別のアプローチを試みている。 JSONデータからサブ辞書を作成し、この辞書データをCSVファイルに書き込もうとしています。ありがとう! – Raj