Hallo,
ich habe ei kleines Problem, das vermutlich auf eine Designfrage rausläuft.
Ich habe Json Objekte wie Dieses hier:
Nun ist das ineinander geschachtelte blöd weil ich mir die key value Paare in eine ods Datei (wie excel im Prinzip) packen will.
Die Keys sind die Spaltenbeschriftung und in jeder Zeile werden eben die "Eigenschaften" des Objekts (die Values) reingepackt in die entsprechende Spalte.
Eben so wie oben , nur als Tabelle, auf gut Deutsch.
Jetzt habe ich mehrere solcher json Objekte, die in die selbe Tabelle sollen.
Zwangsläufig besitzt nicht jedes Objekt die selben keys oder sie sind nicht genauso so verschachtelt wie oben.
Nun habe ich mir eine flatten function gebaut, an der ich shcon wig rummache um was sinnvolles zu fabrizieren:
Aber so recht glücklich werde ich damit nicht, gerade durch die vorkommenden Listen im urspünglichen Objekt.
Wenn ich ind er final tabelle letztlich die Spalten nach den zurückgelegten Pfaden benenne (also erst über den key "Arbeitsort", dann das erste Listenobjekt, dann den key "strasse", ergäbe sowas wie arbeitsort_1_strasse als Spaltenname), dann habe ich das Problem dass ander json Objekte das vielleicht anders strukturiert haben und daher der spaltenname nicht übereinstimmt.
Aber ganz ohne den pfad zu vermerken gehts auch nicht, weil schließlich kommtsowohl beim arbeitsort als auch beim arbeitgeber "land", etc. vor,
also wären die spalten nicht eindeutig oder es würde versehentlich sachen für das arbeitsort_land beim arbeitgeber_lan eingetragen oder so.
Ist vermutlich mehr eine Desinfrage aber was würdet ihr mir raten wie ich das innvoll löse? :-/
ich habe ei kleines Problem, das vermutlich auf eine Designfrage rausläuft.
Ich habe Json Objekte wie Dieses hier:
JSON:
{
"aktuelleVeroeffentlichungsdatum": "2023-12-15",
"laufzeitBis": "2024-01-12",
"alternativBerufe": [
"Fachverk\u00e4ufer/in - Lebensmittelhandwerk (B\u00e4ckerei)",
"Verk\u00e4ufer/in - Nahrungsmittelhandwerk"
],
"angebotsart": "1",
"arbeitgeber": "Younivers GmbH",
"branchengruppe": "Arbeitnehmer\u00fcberlassung, Zeitarbeit",
"branche": "Befristete \u00dcberlassung von Arbeitskr\u00e4ften",
"arbeitgeberHashId": "ukbrhbYmMO0VQjrRhLVvyDT8rmARMfapinLqVDz4GYo=",
"kundennummerHash": "LJVwxYn7GwKpGiwxhU-PY-dvkm0dT9e9ehK5VCLLHds=",
"hashId": "vAIJqo4IeXbvEhwWxYPphNixPtG3H8iI3U3YMzlBwu0=",
"arbeitsorte": [
{
"land": "Deutschland",
"region": "Bayern",
"plz": "80335",
"ort": "M\u00fcnchen",
"koordinaten": {
"lat": 48.1450237,
"lon": 11.5540845
}
}
],
"arbeitszeitmodelle": [
"VOLLZEIT"
],
"befristung": "3",
"uebernahme": false,
"betriebsgroesse": "3",
"eintrittsdatum": "2024-01-02",
"ersteVeroeffentlichungsdatum": "2023-12-15",
"allianzpartner": "arbeitsagentur.de",
"allianzpartnerUrl": "www.younivers-gmbh.de",
"titel": "Verk\u00e4ufer m/w/d B\u00e4ckerei",
"beruf": "Verk\u00e4ufer/in",
"modifikationsTimestamp": "2023-12-15T18:05:03.555",
"stellenbeschreibung": "F\u00fcr unseren Kunden, ein Unternehmen aus dem Bereich der Bio-Lebensmittel, suchen wir in M\u00fcnchen zum n\u00e4chstm\u00f6glichen Zeitpunkt einen Verk\u00e4ufer f\u00fcr den Bereich B\u00e4ckerei m/w/d.\nAls Mitarbeiter profitierst du von einer vielseitigen T\u00e4tigkeit, arbeiten in einem motivierten Team sowie individuellen Weiterentwicklungsm\u00f6glichkeiten in einem wachsenden Unternehmen.\n\nDeine Aufgaben:\n\n - Kundenbedienung und Beratung\n - Verkauf der Backwaren\n - Warenbestellung\n - Wareneingangskontrolle\n - Einhaltung Warenpr\u00e4sentation und der HACCP-Richtlinien\n\n\nDein Profil:\n\n - Erste Erfahrung als Verk\u00e4ufer\n - Kunden- und serviceorientierte Arbeitsweise\n - Freude am Umgang mit Menschen\n\n - Teamf\u00e4higkeit\n\n\nUnsere Benefits f\u00fcr dich:\n\n - Einen unbefristeten Arbeitsvertrag mit einer \u00dcbernahmeoption durch unseren Kunden\n - Pers\u00f6nliche und wertsch\u00e4tzende Betreuung durch unser HR-Team\n - Interessante Aufgaben in einem zukunftsorientierten Umfeld \n - Zusammenarbeit auf Augenh\u00f6he und offene Kommunikation \n - Weiterentwicklungs-sowie F\u00f6rderm\u00f6glichkeiten in einem wachsenden Unternehmen\nHaben wir dein Interesse geweckt? Dann freuen wir uns auf deine Bewerbung \u00fcber unser Bewerbungsformular. Klicke einfach auf dem Button \"JETZT BEWERBEN\".\n\n Du kennst jemanden der auf die Stellenausschreibung passt? Dann hole dir jetzt unseren Weiterempfehlungsbonus! Erkundige dich gleich telefonisch bei uns.\n \n Wir freuen uns auf deine Bewerbung!\n\n",
"refnr": "14638-11830854-S",
"fuerFluechtlingeGeeignet": false,
"nurFuerSchwerbehinderte": false,
"anzahlOffeneStellen": 1,
"arbeitgeberAdresse": {
"land": "Deutschland",
"region": "Bayern",
"plz": "80687",
"ort": "M\u00fcnchen",
"strasse": "Elsenheimerstr. 61"
},
"mobilitaet": {
"fahrzeugErforderlich": false
},
"fuehrungskompetenzen": {
"hatVollmacht": false,
"hatBudgetverantwortung": false,
"fuehrungsverantwortung": "1"
},
"arbeitgeberdarstellungUrl": "http://WWW.YOUNIVERS.ORG",
"hauptDkz": "6627",
"alternativDkzs": [
"50919",
"35121"
],
"istBetreut": false,
"istPrivateArbeitsvermittlung": false,
"istZeitarbeit": true,
"istGoogleJobsRelevant": false,
"anzeigeAnonym": false
}
Nun ist das ineinander geschachtelte blöd weil ich mir die key value Paare in eine ods Datei (wie excel im Prinzip) packen will.
Die Keys sind die Spaltenbeschriftung und in jeder Zeile werden eben die "Eigenschaften" des Objekts (die Values) reingepackt in die entsprechende Spalte.
Eben so wie oben , nur als Tabelle, auf gut Deutsch.
Jetzt habe ich mehrere solcher json Objekte, die in die selbe Tabelle sollen.
Zwangsläufig besitzt nicht jedes Objekt die selben keys oder sie sind nicht genauso so verschachtelt wie oben.
Nun habe ich mir eine flatten function gebaut, an der ich shcon wig rummache um was sinnvolles zu fabrizieren:
Python:
def flatten_dict(d, parent_key='', sep='_', index=1):
items = []
for k, v in d.items():
new_key = f"{parent_key}{sep}{k}" if parent_key else f"{k}"
if isinstance(v, dict):
items.extend(flatten_dict(v, new_key, sep=sep).items())
elif isinstance(v, list):
for i, item in enumerate(v, start=index):
if isinstance(item, dict):
items.extend(flatten_dict(item, f"{new_key}_{i}", sep=sep).items())
else:
items.append((f"{new_key}_{i}", item))
else:
items.append((new_key, v))
return dict(items)
Aber so recht glücklich werde ich damit nicht, gerade durch die vorkommenden Listen im urspünglichen Objekt.
Wenn ich ind er final tabelle letztlich die Spalten nach den zurückgelegten Pfaden benenne (also erst über den key "Arbeitsort", dann das erste Listenobjekt, dann den key "strasse", ergäbe sowas wie arbeitsort_1_strasse als Spaltenname), dann habe ich das Problem dass ander json Objekte das vielleicht anders strukturiert haben und daher der spaltenname nicht übereinstimmt.
Aber ganz ohne den pfad zu vermerken gehts auch nicht, weil schließlich kommtsowohl beim arbeitsort als auch beim arbeitgeber "land", etc. vor,
also wären die spalten nicht eindeutig oder es würde versehentlich sachen für das arbeitsort_land beim arbeitgeber_lan eingetragen oder so.
Ist vermutlich mehr eine Desinfrage aber was würdet ihr mir raten wie ich das innvoll löse? :-/