如何使用PowerShell查询JSON文件中“类型”字符串的更改值?我找不到“类型”字符串。
{
"name": "b",
"compatibilityLevel": 1400,
"model": {
"culture": "c",
"dataSources":[
{
"type": "structured"
}
]
}}
$pathToJson = "C:\Model.bim"
$a = Get-Content $pathToJson | ConvertFrom-Json
$a.'model.dataSources.type' = "c"
$a | ConvertTo-Json -Depth 10 | Set-Content $pathToJson
答案 0 :(得分:1)
tl; dr
$a.model.dataSources[0].type = 'c'
请注意需要指定索引[0]
,因为$a.model.dataSources
是数组。
针对您尝试过的操作的AS:
$a.'model.dataSources.type' = "c"
您不能使用存储在 string ('...'
)中的属性 path 直接访问嵌套属性,因为PowerShell会解释{{1 }}作为单个属性的名称。
即使该问题已得到纠正,'model.dataSources.type'
仍不能正常工作,因为$a.model.dataSources.type = "c"
返回值的数组,并且您不能直接设置该数组的元素上的属性;取而代之的是,您必须明确地指定目标数组元素为目标,如上($a.model.dataSources
所示。
[0]
获取数组元素的.type
值,但这不适用于< em> setting -通过设计,可以防止所有具有相同值的数组元素的意外更新;参见this answer。