我想使用Powershell和json文件工作。
我有一个从Powershell上的Invoke-RestMethod
生成的JSON文件。
输出的json文件如下所示:
[
{
"_id": "ID1",
"isTemplate": true,
"origin": "SPO_Promoteur_DEV",
"tenant": "spo",
"reference": "HbiuOzq1u",
"date": "2019-02-04T16:01:35.230Z",
"data":
{
"tasks":
{
"rows": [
{
"parentId": "root",
"entities": [
"Something there"
],
"Name": "A name there"
},
{
"parentId": "Z9zgsHzFad",
"entities": [
"urn:CodeEtape:DONGEN:CodeAction:TEST1"
],
"Duration": 0,
"index": 0,
"Id": "wWotapvig"
}
]
}
}
},
{
"_id": "ID12",
"isTemplate": true,
"origin": "SPO_Promoteur_DEV",
"tenant": "spo",
"reference": "Hbkjh548u",
"date": "2019-02-04T16:01:35.230Z",
"data":
{
"tasks":
{
"rows": [
{
"parentId": "root",
"entities": [
"Something else there"
],
"Name": "An other name there"
},
{
"parentId": "Z9zgszffzfHzFad",
"entities": [
"urn:CodeEtape:DONGEN:CodeAction:TEST1"
],
"Duration": 0,
"index": 0,
"Id": "wWotapvig"
}
]
}
}
}
]
我想分离这个json文件。
我如何生成名为reference.json
的json文件(在json主文件上给出了引用)并以isTemplate
为真?
所以我将获得X文件,每个文件都有其引用作为名称,每个文件都具有IsTemplate
参数为TRUE。
感谢您的帮助
答案 0 :(得分:2)
如果我正确理解了这个问题,则可以读取json文件,该文件包含一个项目数组,并将每个项目另存为单独的新json文件,如下所示。
每个项目的文件名都为reference_XYZ.json
,其中“ XYZ”将是“ _id”值。
$inputFile = 'FULL PATH TO YOUR INPUT JSON FILE'
$outputPath = Split-Path $inputFile -Parent
$json = Get-Content -Raw -Path $inputFile | ConvertFrom-Json
foreach ($item in $json) {
$fileName = Join-Path -Path $outputPath -ChildPath ('reference_{0}.json' -f $item._id)
$item | ConvertTo-Json -Depth 10 | Out-File $fileName
}
我不太确定您对的含义,并且每个参数的IsTemplate参数都设置为TRUE ,因为这两个项目的属性均设置为True。
如果您只想保存具有此"isTemplate": true
的项目,而忽略其他错误的项目,则只需在Where-Object
循环中添加一个foreach
子句,如下所示:
foreach ($item in ($json | Where-Object { $_.isTemplate -eq $true})) {
...
}