Filer json通过选择特定节点

时间:2016-10-04 14:18:03

标签: powershell-v4.0

我的JSON如下

{
    "Root": [{
        "Child": [{
            "Id": "1"
        }],

        "Child1": [{
            "Id": "2"
        }]
    }]
}

我的内容如下

$content = (Get-Content -filepath) -join "`n" | ConvertFrom-Json

我需要的是如果我从脚本传递为Child1,我需要提取以下节点并显示

"Child1": [{
        "Id": "2"
    }]

1 个答案:

答案 0 :(得分:2)

由于您使用的是PS3 +,而不是加入线条(速度很慢),请通过 @Override public void run() { while(true){ String line = buffer.getData(); if(line != null){ System.out.println(line); //do stuff with the data. } } } 将文件作为一个字符串读取:

-Raw
  • 按名称过滤,显示没有名称的内容:

    $content = Get-Content $filepath -Raw | ConvertFrom-Json
    

    在PS2.0中:

    $name = 'Child1'
    $content.Root.$name | ConvertTo-Json
    
  • 按名称过滤,显示名称和内容:

    $content.Root | Select -expand $name | ConvertTo-Json
    
  • $name = 'Child1' ($content.Root | select $name | ConvertTo-Json) -replace '^.|.$','' 过滤,显示内容:

    Id
  • $content.Root | ForEach { $_.PSObject.Properties.Value | Where Id -eq 2 } | ConvertTo-Json 过滤,显示节点的名称和内容:

    Id