提供我有以下 JSON
{
"firstName": "Frank",
"lastName": "Smith",
"age": "25",
"address": {
"streetAddress": "21 3rd st",
"city": "New York",
"state": "NY",
"postalCode": "10021"
},
"phoneNumber": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "fax",
"number": "646 555-4567"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我需要能够使用点表示法更新值。
$path = "C:\somePath\test.json"
$node = "address.streetAddress" # should also work with "phoneNumber[0].number"
$value = "21 Jump St."
$config = Get-Content -Path $path -Raw | ConvertFrom-Json
$config.$node = $value
Write-Host $config.$node
#Set-Content $path $($config | ConvertTo-Json)
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是找不到该属性。
异常设置“address.streetAddress”:“在此对象上找不到属性‘address.streetAddress’。请验证该属性是否存在并且可以设置。”
我需要做什么才能传入点分符号并更新适当的值?
虽然您可以将单个属性名称放入变量中并使用它来访问该属性,但您不能对多个点属性执行此操作。您可以使用 Invoke-Expression 解决此问题:
Invoke-Expression "`$config.$node = `$value"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2100 次 |
| 最近记录: |