ho JSON che assomiglia a questo:Unione di oggetti JSON in PowerShell
{
"Workflow": [
{
"Parameters": {
"Project": "/Path/To/File",
"OtherParam": "True"
}
}
],
"Overrides": [
{
"Special": {
"Parameters": {
"NewParam": "NewStuffGoesHere",
"OtherParam": "False"
}
}
}
]
}
... dove voglio utilizzare la sezione Overrides.Special
per aggiungere o aggiornare i campi nell'oggetto flusso di lavoro. In altre parole, dato il JSON sopra, voglio fare qualcosa di simile:
$config = Get-Content workflow.json | out-string | ConvertFrom-Json
$configWithOverrides = Merge-Object $config.Workflow $config.Overrides.Special
e finire con qualcosa di simile:
$configWithOverrides
Parameters
----------
@{Project=/Path/To/File; NewParam=NewStuffGoesHere; OtherParam=False}
posso certamente scrivere la funzione Merge-Object
sopra per aggiungere o aggiorna i valori secondo necessità in base a cosa c'è nella sezione di sovrascrittura, ma sembra che ci dovrebbe (potrebbe?) essere un modo integrato o one-liner per gestirli.
ho provato questo:
$test = $config.Workflow + $config.Overrides.Special
... ma che non funziona del tutto.
$test
Parameters
----------
@{Project=/Path/To/File; OtherParam=True}
@{NewParam=NewStuffGoesHere; OtherParam=False}
In questo modo i parametri che aggiungono:
>$test.Parameters.NewParam
NewStuffGoesHere
... ma non è così grande per l'aggiornamento loro
>$test.Parameters.OtherParam
True
False
Nota - In questo esempio, ho scelto di gestire il Unisci dopo aver convertito il json in un psobject, ma non è un requisito.
Possibile: http://stackoverflow.com/questions/29670111/powershell-merging-json-files – Matt
Questa soluzione non funziona (in realtà non è convinto che funzioni anche per il problema descritto in questo caso). Ho aggiunto ulteriori informazioni sopra per chiarire perché un "+" dritto dei nodi è inadeguato. – Alan
L'ultima volta proverò: http: // StackOverflow.it/questions/29330627/extend-json-with-another-in-powershell/29334164 # 29334164 forse è più quello a cui ti stavi appoggiando. Sebbene sia una risposta basata sulla funzione che hai affermato di essere in grado di fare – Matt