2016-05-27 14 views
0

Ich arbeite daran, Nutzeraktivitätsprotokolle aus dem Google Drive-Admin-SDK zu sammeln. Bisher habe ich ein Python-Skript gemacht und ich bekomme einige Aktivitätsergebnisse im JSON-Format. Aber das Format selbst ist nicht das, nach dem ich suche, und hier ist ein Beispiel:JSON-Ausgabe vom Google Drive-Admin-SDK activity.list()

{u'nextPageToken ': u'A: 6165487685465: -68949849879703739: 37156465464: C65dE3qea', u'items ': [u'kind ': u'admin # meldet # Aktivität', u'actor ': {u'profileId': u'10651651515611643 ', u'email': u'[email protected] '}, u'events ': [{u'type': u'login ',' name ': u'login_success', ...

Wie Sie sehen können, bekomme ich am Anfang von jedem einige "u" Zeichen Artikel und ich weiß nicht warum.

Eigentlich mag ich die Ausgabe auf diese Weise strukturiert erhalten:

{ 
    "kind": "reports#activities", 
    "nextPageToken": string, 
    "items": [ 
    { 
     "kind": "audit#activity", 
     "id": { 
     "time": datetime, 
     "uniqueQualifier": long, 
     "applicationName": string, 
     "customerId": string 
     }, 
     "actor": { 
     "callerType": string, 
     "email": string, 
     "profileId": long, 
     "key": string 
     }, 
     "ownerDomain": string, 
     "ipAddress": string, 
     "events": [ 
     { 
      "type": string, 
      "name": string, 
      "parameters": [ 
      { 
       "name": string, 
       "value": string, 
       "intValue": long, 
       "boolValue": boolean 
      } 
      ] 
     } 
     ] 
    } 
    ] 

}

Ist es möglich, sie aus dem Skript zu strukturieren selbst? (? Vielleicht simplejson durch)

Hier ist mein Python-Code:

from __future__ import print_function 
import httplib2 
import os 
import simplejson as json 
from apiclient import discovery 
import oauth2client 
from oauth2client import client 
from oauth2client import tools 

try: 
import argparse 
flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args() 
except ImportError: 
flags = None 
SCOPES = 'https://www.googleapis.com/auth/admin.reports.audit.readonly' 
CLIENT_SECRET_FILE = 'client_secret.json' 
APPLICATION_NAME = 'Reports API Python Quickstart' 


def get_credentials(): 
home_dir = os.path.expanduser('~') 
credential_dir = os.path.join(home_dir, '.credentials') 
if not os.path.exists(credential_dir): 
    os.makedirs(credential_dir) 
credential_path = os.path.join(credential_dir, 
           'admin-reports_v1-python-quickstart.json') 

store = oauth2client.file.Storage(credential_path) 
credentials = store.get() 
if not credentials or credentials.invalid: 
    flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES) 
    flow.user_agent = APPLICATION_NAME 
    if flags: 
     credentials = tools.run_flow(flow, store, flags) 
    else: 
     credentials = tools.run(flow, store) 
    print('Storing credentials to ' + credential_path) 
return credentials 

def main(): 
credentials = get_credentials() 
http = credentials.authorize(httplib2.Http()) 
service = discovery.build('admin', 'reports_v1', http=http) 

results = service.activities().list(userKey='all', applicationName='drive', 
    maxResults=10).execute() 
activities = results.get('items', []) 

if not activities: 
    print('No activities') 
else: 
    for activity in activities: print(results) 

if __name__ == '__main__': 
main() 

Dies ist mein erstes Mal mit Google API und jeder möglichen Hilfe würde geschätzt.

Danke!

+0

Check diesen Beitrag in Bezug auf die Unicode-Präfix http://stackoverflow.com/questions/13940272/python-json-loads-returns-items-prefixing-with-u – glls

Antwort

0

Sie die unicode prefix erschrecken Sie nicht lassen:

Sie json formatiert zu erhalten, nur json.dumps verwenden (arg Spiegelstrich = 2) und das Layout wird entsprechend eingerückt und angeordnet werden.

Ex:

import json 
print json.dumps({'4': 5, '6': 7}, sort_keys=True, 
        indent=4, separators=(',', ': ')) 

Ergebnis:

{ 
    "4": 5, 
    "6": 7 
} 

für mehr über Python JSON Modul here

+0

Arbeitete wie ein Charme, danke glls! – Felz

+0

kein Problem, froh, ich könnte helfen – glls

Verwandte Themen