使用动态proprty名称访问JSON嵌套属性

时间:2017-03-19 11:18:39

标签: json powershell

我们说我有JSON对象

{
    "trigger": {
        "schedule.main": {
            "interval": "5m"
        }
    }
}

我需要修改" 5m"到" 10m"。

当我在脚本中明确键入要更改的变量的整个路径时,可以轻松实现这一点:

$jsonStr = @'
{
    "trigger": {
        "schedule.main": {
            "interval": "5m"
        }
    }
}
'@

$jsonObj = ConvertFrom-Json $jsonStr

Write-Output ($jsonObj | ConvertTo-Json)
$jsonObj.trigger."schedule.main".interval = "10m"
Write-Output ($jsonObj | ConvertTo-Json)

现在我想用作为字符串提供的属性的完整路径获得相同的结果(这来自一些配置文件以及要更改的值):

$propertyPath = "trigger.""schedule.main"".interval"

如何在PowerShell脚本中实现这一点,因此我不会硬编码属性名称的路径,而是从提供的字符串动态构建它?

我尝试了iex,它修改了JSON对象的副本:

$prop = (iex "`$jsonObj.$propertyPath")
$prop = "30m"

$jsonObj仍未修改,这是一个问题。

0 个答案:

没有答案