微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

操作 JSON 对象的时间戳

如何解决操作 JSON 对象的时间戳

{
    "logs":  [
                 {
                     "timestamp":  "20181216T14:36:12","description":  "IP connectivity via interface ipmp1 has become degraded.","type":  "alert","uuid":  "1234567","severity":  "Minor"
                 },{
                     "timestamp":  "20181216T14:38:16","description":  "Network connectivity via port ibp4 has been established.","uuid":  "12345678","severity":  "Minor"
                 }
             ]
}

我有这个 JSON 对象,我想遍历每个对象并将时间戳更新为更具可读性的日期。现在,我有

$currentLogs.logs |
Where{$_.type -eq 'alert'} |
ForEach{$_.timestamp = {[datetime]::parseexact($_.timestamp,'yyyyMMdd\THH:mm:ss',$null)}}

但是当我读取对象 $currentLogs 时,它仍然没有更新。

解决方法

您需要首先解析您的日期/时间,然后应用您想要的格式。如果您不应用任何格式,那么 timestamp 属性将是一个 datetime 对象类型,并且转换回 JSON 会对它进行奇怪的格式设置。最好将您的新格式设置为字符串,以便 JSON 序列化不会对其进行操作:

$currentLogs.logs | Where type -eq 'alert' | ForEach-Object {
    $_.timestamp = [datetime]::parseexact($_.timestamp,'yyyyMMddTHH:mm:ss',$null).ToString('yyyy-MM-dd HH:mm:ss')
}

在您的尝试中,您使用了以下代码:

{[datetime]::parseexact($_.timestamp,'yyyyMMdd\THH:mm:ss',$null)}

使用周围的 {} 表示脚本块。如果该脚本块没有被调用或调用,它只会逐字输出其内容。您可以在控制台中运行上述代码并查看结果。

您也没有在解析尝试后格式化您的 datetime 对象。默认情况下,当 ToString() 值设置为属性时,控制台中的输出将隐式应用 datetime,但该隐式格式不会转换为您的 JSON 转换(无论出于何种原因)。>

,

感谢您显示所需的格式。

要更新“type”等于“alert”的元素,您可以这样做:

localStorage

如果您想保存到文件,请在上面最后一行附加 $json = @' { "logs": [ { "timestamp": "20181216T14:36:12","description": "IP connectivity via interface ipmp1 has become degraded.","type": "alert","uuid": "1234567","severity": "Minor" },{ "timestamp": "20181216T14:38:16","description": "Network connectivity via port ibp4 has been established.","uuid": "12345678","severity": "Minor" } ] } '@ | ConvertFrom-Json # find the objects with 'type' equals 'alert' $json.logs | Where-Object { $_.type -eq 'alert' } | ForEach-Object { # parse the date in its current format $date = [datetime]::ParseExact($_.timestamp,$null) # and write back with the new format $_.timestamp = '{0:yyyy-MM-dd HH:mm:ss}' -f $date } # convert back to json $json | ConvertTo-Json

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。