1

如何使用 PowerShell 查询 JSON 文件中“类型”字符串的更改值?我无法进入“类型”字符串。

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
4

1 回答 1

1

tl;博士

$a.model.dataSources[0].type = 'c'

注意需要指定索引[0],因为$a.model.dataSources数组


至于你尝试了什么:

$a.'model.dataSources.type' = "c"

  • 您不能使用存储在字符串( ) 中的属性路径直接访问嵌套属性,因为 PowerShell 将其解释为单个属性的名称。'...''model.dataSources.type'

  • 即使纠正了这个问题,$a.model.dataSources.type = "c"也不起作用,因为$a.model.dataSources返回一个值数组,并且您不能直接在该数组的元素上设置属性;相反,您必须明确定位感兴趣的数组元素,如上所示 ( )。[0]

    • 请注意,您可以通过名为member enumeration的 PSv+ 功能获取数组元素的.type值,但这不适用于设置- 通过设计,以防止可能无意更新具有相同值的所有数组元素;看到这个答案$a.model.dataSources.type
于 2019-04-05T13:59:12.647 回答