Powershell: jedes Key-Value Paar auslesen (verschachtelt)

mrcount
Goto Top
Servus zusammen,

ich habe hier ein paar Dateien (Dateiendung .rig), die offenbar im JSON-Format sind, aber ich komme nicht an ALLE Keys/Vars ran, da sie sehr verschachtelt sind.

Hier der Inhalt einer Beispieldatei:


Nachdem ich diverse Zeichen ersetzt habe ist es auch valides JSON:


Ergebnis:

Jetzt würde ich gerne ALLE Key/Value Paare auflisten.
Hier mein bisheriger Code:


Ergebnis:

Nun würde ich aber auch gerne die Keys/Values aus "FootSwitch", "Pedal1", etc. haben.
Wie komme ich da dran?

Content-Key: 1240642307

Url: https://administrator.de/contentid/1240642307

Ausgedruckt am: 14.08.2022 um 01:08 Uhr

Mitglied: TK1987
Lösung TK1987 09.09.2021 aktualisiert um 09:45:30 Uhr
Goto Top
Moin,

Zitat von @MrCount:
Nun würde ich aber auch gerne die Keys/Values aus "FootSwitch", "Pedal1", etc. haben.
Wie komme ich da dran?
diese sind wiederum Eigenschaften des Objekts Content, daher musst du auch entsprechend so fortfahren:

Wenn du wirklich alle Eigenschaftsnamen sämtlicher Subobjekte etc. aufgelistet haben willst, bringen dich die Namen alleine nicht wirklich weiter - weil du dann hinter nicht mehr wüsstest, welche Eigenschaft zu welchem Objekt gehört.

Was möglich wäre, ist eine Funktion zu bauen, die die Eigenschaften recursiv ausgibt:

back-to-topDas Ganze dann mit deiner Json in Aktion:
unbenannt

Um dann noch die Werte zu erhalten, brauchst du die Ausgabe dann nur noch mit Foreach abzuarbeiten.

Gruß Thomas
Mitglied: MrCount
MrCount 09.09.2021 aktualisiert um 12:47:37 Uhr
Goto Top
Servus Thomas,

erstmal danke für die Hilfe und den Code!
Der funktioniert auch wunderbar.

Habe mir das Ergebnis in eine txt ausgeben lassen und versuche nun mit foreach jeden Wert zu bekommen, was aber nicht klappt.

keys.txt:
2021-09-09 12_43_26-keys.txt - editor


Hier der Code:

Dabei werden mir allerdings keine bzw. nur ein paar Werte angezeigt.
Ausgabe:
2021-09-09 12_45_43-windows powershell
2021-09-09 12_28_39-windows powershell

Wenn ich
verwende, dann werden mir die Werte angezeigt.

Ausgabe:
2021-09-09 12_28_55-windows powershell
Mitglied: TK1987
Lösung TK1987 09.09.2021 aktualisiert um 13:39:59 Uhr
Goto Top
Zitat von @MrCount:
Hier der Code:

Dabei werden mir allerdings keine bzw. nur ein paar Werte angezeigt.
Wenn du eine Eigenschaft aus einer Variable (in deinem Fall $key) aufrufst, wird die gesamte Variable als ein zusammenhängender Eigenschaftname aufgerufen (also inklusive der Punkte, welche als Eigenschaftsname ebenfalls zulässig sind).

Um zu erreichen, dass die Punkte als Subproperties erkannt werden, muss du die $json Variable inkl. der $keys Variable als Zeichenkette zusammenfügen und dann mit invoke-expression arbeiten, um die Zeichenkette als Code auszuführen.
Mitglied: MrCount
MrCount 09.09.2021 um 13:47:50 Uhr
Goto Top
Zitat von @TK1987:

Um zu erreichen, dass die Punkte als Subproperties erkannt werden, muss du die $json Variable inkl. der $keys Variable als Zeichenkette zusammenfügen und dann mit invoke-expression arbeiten, um die Zeichenkette als Code auszuführen.

Merci!! face-smile