在powershell中序列化复杂类时排除或选择性地包括子属性



我正在寻找一种有效的方法来选择性地序列化复杂类的某些子属性。

例如,下面是指定命令的输出

获取日期|选择-属性Ticks,TimeOfDay | ConvertTo Json

{
"Ticks":  637590063235806354,
"TimeOfDay":  {
"Ticks":  399235806354,
"Days":  0,
"Hours":  11,
"Milliseconds":  580,
"Minutes":  5,
"Seconds":  23,
"TotalDays":  0.46207847957638887,
"TotalHours":  11.089883509833333,
"TotalMilliseconds":  39923580.635400005,
"TotalMinutes":  665.39301059,
"TotalSeconds":  39923.5806354
}
}

我希望我的序列化类看起来像这样:

{
"Ticks":  637590063235806354,
"TimeOfDay":  {
"TotalMinutes":  665.39301059,
"TotalSeconds":  39923.5806354
}
}

使用所需的属性重建类不是所需的解决方案,因为对于实际用例,类更复杂,包含更多的级别。

以下内容不起作用,但可能会更好地理解我正在寻找的内容。

获取日期|选择-属性Ticks,TimeOfDay.TotalMinutes,TimeOfDay.TotalSeconds|转换为Json

你可以做这种事情:

Get-Date | Select-Object Ticks, @{N="TimeofDay";e={[pscustomobject]@{TotalMinutes=$_.TimeOfDay.TotalMinutes;TotalSeconds=$_.TimeofDay.TotalSeconds}}} | ConvertTo-Json

最新更新