如何在 JSON 文件的 PowerShell 中输入按方括号

How to enter press square brackets in PowerShell on JSON File

如何使用 PowerShell 查询 JSON 文件中 "type" 字符串的更改值?我无法访问 "type" 字符串。

JSON 文件

{
"name":  "b",
"compatibilityLevel":  1400,
"model":  {
              "culture":  "c",
              "dataSources":[
                                  {
                                      "type":  "structured"
                                  }
                            ]
         }}

PowerShell

$pathToJson =  "C:\Model.bim"

$a = Get-Content $pathToJson | ConvertFrom-Json

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

$a | ConvertTo-Json -Depth 10  | Set-Content $pathToJson

tl;dr

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

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


至于你试过的

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

  • 您不能使用存储在 string 中的 属性 path ('...' ) 直接访问嵌套的 属性,因为 PowerShell 将 'model.dataSources.type' 解释为 single 属性.

    的名称
    • 请参阅 了解解决方法。
  • 即使该问题已得到纠正,$a.model.dataSources.type = "c" 也不会 起作用,因为 $a.model.dataSources returns 和 array 的值,你不能直接 set a 属性 该数组的 elements;相反,您必须显式定位感兴趣的数组元素,如上所示 ([0]).

    • 请注意,您可以通过名为 member-access enumeration, but that doesn't work on setting - by design, to prevent possibly inadvertent updating of all array elements with the same value; see this answer.[=59 的 PSv+ 功能 获取 数组元素的 .type$a.model.dataSources.type =]