2016-10-31 3 views
0

Ich bin ziemlich neu in Python, also arbeite ich mich durch das Verstehen der Datensätze.Python-Objekte und Listen innerhalb des Wörterbuchs

Ich habe ein wenig Probleme beim Erstellen der JSON-Ausgabe, die für die API benötigt wird, mit der ich arbeite.

ich verwende

import json 
json.load(data_file) 

mit Python-Wörterbuch arbeiten und dann

json.dump(dict, json_data) 

Meine Daten tun muss wie folgt aussehen, wenn es ausgegeben wird.

{ 
    "event":{ 
    "id":10006, 
    "event_name":"My Event Name", 
    }, 
    "sub event":[ 

    ], 
    "attendees":[ 
    { 
     "id":11201, 
     "first_name":"Jeff", 
     "last_name":"Smith", 
    }, 
    { 
     "id":10002, 
     "first_name":"Victoria", 
     "last_name":"Baker", 
    }, 
    ] 
} 

ich in der Lage gewesen, die Arrays in Python zu erstellen und zu json Dump, aber ich habe Schwierigkeiten das Ereignis „Objekt“ im Wörterbuch zu schaffen. Ich benutze das folgende:

attendees = ['attendees'] 
attendeesdict = {} 
attendeesdict['first_name'] = "Jeff" 
attendees.append(attendeesdict.copy()) 

Kann jemand mir helfen, das "Ereignis" -Objekt richtig hinzuzufügen?

+0

Du bist Schwierigkeiten mit dem Event-Objekt/dcit, aber Ihre Frage scheint sich um das * Teilnehmerdiktat zu handeln. Bitte klären Sie. Sie werden wahrscheinlich nicht in der Lage sein, die Methode ".copy" hier zu verwenden, wenn Sie innerhalb einer Schleife arbeiten, aber Sie müssen mehr Code zeigen, damit wir verstehen, was Sie tatsächlich implementieren wollen und wie Sie darüber hinausgehen. –

+1

Der Code, den Sie bisher haben, macht sowieso keinen Sinn. Es ist nicht notwendig, die Zeichenfolge "Teilnehmer" als erstes Element in der Teilnehmerliste zu haben. –

+0

Es ist schwierig zu verstehen, wonach Sie fragen. Was ist in dir "Daten_Datei"? Bitte poste seinen Inhalt. Ihr Ereignis scheint ein sehr einfaches Wörterbuch zu sein, was Sie davon abhält, ein einfaches 'json_data [" event "] = {" id ": 10006," event_name ":" Mein Ereignisname "}'? Sie werden feststellen, dass Python dict/list und JSON sehr ähnlich sind. – Guillaume

Antwort

1

Im Allgemeinen von JSON gehen Wörterbuch ist fast keine Arbeit, weil die beiden sehr ähnlich sind, wenn nicht identisch:

attendees = [ 
    { 
     "first_name": "Jeff" 
     # Add other fields which you need here 
    }, 
    { 
     "first_name": "Victoria" 
    }  
] 

In diesem Fall ist attendees eine Liste von Wörterbüchern. Für die event:

event = { 
    "id": 10006, 
    "event_name": "My Event Name" 
} 

es Putting alles zusammen:

data = { 
    "event": event, 
    "sub event": [], 
    "attendees": attendees 
} 

Jetzt können Sie es in ein JSON-Objekt konvertieren, bereit, Ihre API zu senden:

json_object = json.dumps(data) 
+0

Vielen Dank! Das erklärte es perfekt für mich, ich machte die Dinge so kompliziert, indem ich alle Listen durchging, Python macht es so einfach, wenn man es so sieht! – CareFree

1

Wenn Sie nur ein verschachteltes Diktat statisch erstellen möchten, können Sie ein einzelnes Literal verwenden. Wenn Sie den obigen JSON in Python-Code einfügen, erhalten Sie ein gültiges Diktat-Literal.

1

Angenommen, Sie gebaut haben alle anderswo Werte und jetzt bist du nur sie zusammen setzen:

result = {'event':event_dict, 'sub event':subevent_list, 'attendees':attendees_list} 
0

Baue dein dicts und fügen Sie wie unten

{ 
     "event":"add your dict" 
     "sub event":["add your dict"], 
     "attendees":["add your dict"] 
    } 
Verwandte Themen