json-Objekte in Powershell zusammenführen

8

Ich habe json, das so aussieht:

%Vor%

... wo ich den Abschnitt Overrides.Special verwenden möchte, um Felder im Workflow-Objekt hinzuzufügen oder zu aktualisieren. Mit anderen Worten, mit dem obigen json möchte ich so etwas tun:

%Vor%

Und am Ende mit so etwas:

%Vor%

Ich kann die obige Funktion Merge-Object natürlich schreiben, um Werte hinzuzufügen oder zu aktualisieren, je nachdem, was im Override-Bereich ist, aber es scheint, dass es eine eingebaute oder einzeilige Möglichkeit geben sollte (könnte?) .

Ich habe es versucht:

%Vor%

... aber das funktioniert nicht ganz.

%Vor%

Dies ermöglicht das Hinzufügen von Parametern:

%Vor%

... aber es ist nicht so toll, sie zu aktualisieren

%Vor%

Hinweis - In diesem Beispiel wähle ich die Konvertierung nach dem Konvertieren des JSON in ein PSObject, aber das ist keine Voraussetzung.

    
Alan 20.05.2015, 20:15
quelle

1 Antwort

6

Ich habe einen One-Liner, um zu tun, was Sie verlangen. Beachten Sie, dass PowerShell, soweit ich weiß, nicht direkt mit json-Strings behandelt. Aber sobald es in PowerShell-Objekte konvertiert wurde, ist es wie jedes andere Objekt.

Definieren Sie also zuerst Ihre json-Datei und lesen Sie sie als eine einzelne Zeichenfolge:

%Vor%

Definieren Sie die Eigenschaft, auf der die json-Objekte und das 1. und 2. Objekt zusammengeführt werden sollen:

%Vor%

Sieh dir jetzt das Einliner an (das ich aus Gründen der Klarheit in 3 geteilt habe):

%Vor%

Siehst du? $MergedJson enthält die folgende Zeichenfolge (mit Ihrer JSON-Zeichenfolge):

%Vor%

Suchen Sie das?

P.S .: Wenn Sie die Rollen von $ 1 und $ 2 vertauschen, ändern sich die Werte der gemeinsamen Parameter (wie OtherParam ), die Vorrang haben.

    
user4018458 21.05.2015, 05:46
quelle

Tags und Links