我想读取我的JSON文件并使用重新排列的代码写入相同的文件。 我的JSON文件给了我类似的东西:
{
"one": [
{
"name": { "displayName": "Alex" },
"two": [
{
"date": "20072008",
"data": {
"id": "524556",
"fullname": "Alexandre Gagne",
"name": "Alexandre",
"lastName": "Gagne"
}
}
]
}
]
}
但是我想要这样的东西
{
"id": "524556",
"fullname": "Alexandre Gagne",
"name": "Alexandre",
"lastName": "Gagne"
}
这是我使用的代码:
$jsonfile118 = 'C:/Users/Web_Q/Desktop/json/8472382-2017-2018.json'
$json118 = Get-Content $jsonfile118 | Out-String | ConvertFrom-Json
$json118.stats.splits
$json118 | Add-Member -Type NoteProperty -Name "id" -Value 524556
$json118 | ConvertTo-Json -Depth 10 | Set-Content $jsonfile118
我还使用了另一段代码,仅在终端中提供了我想要的东西,当我使用Set-Content
时,输出如下所示:
"{ \'id'\ 536453 }"
代码如下:
(New-Object PSObject |
Add-Member -PassThru NoteProperty id $json118.stats.splits.getId
) | ConvertTo-Json
答案 0 :(得分:2)
您需要的是
将Json转换为对象
选择所需的成员
转换回json
$Data = $JsonString | ConvertFrom-Json
$Data.One.Two.Data | ConvertTo-Json
答案 1 :(得分:1)
@'
{
"one": [
{
"name": { "displayName": "Alex" },
"two": [
{
"date": "20072008",
"data": {
"id": "524556",
"fullname": "Alexandre Gagne",
"name": "Alexandre",
"lastName": "Gagne"
}
}
]
}
]
}
'@ | ConvertFrom-Json | Flatten-Object -Depth 9 -Base "" | ConvertTo-Json
结果:
{
"one.name.displayName": "Alex",
"one.two.date": "20072008",
"one.two.data.id": "524556",
"one.two.data.fullname": "Alexandre Gagne",
"one.two.data.name": "Alexandre",
"one.two.data.lastName": "Gagne"
}
这与您定义的“ 类似”并不完全相同,因为它在属性名称中使用了父名称。这是为了确保名称始终唯一,因为在不同的父项下使用相同的子名称是技术上的可能。