首页 > 解决方案 > 在powershell中序列化复杂类时排除或选择性地包含子属性

问题描述

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

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

获取日期 | 选择 -Property Ticks, TimeOfDay | 转换为 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
                  }
}

重建具有所需属性的类并不是真正的用例所需的解决方案,该类更复杂并且包含更多级别。

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

获取日期 | 选择 - 属性刻度、TimeOfDay.TotalMinutes、TimeOfDay.TotalSeconds | 转换为 JSON

标签: powershell

解决方案


你可以做这样的事情:

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

推荐阅读