繁体   English   中英

使用PowerShell将字符串转换为Json

[英]Convert string to Json with powershell

我有一个文本文件,其行如下:

TRACE 2016-06-23 08:47:54,803 {"x":"0.0000179000","l":"Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.34209)","a":"Get","p":"345","u":"dae824a6-144b-4135-a6fd-01584f06a27f","i":"10.0.2.166","s":"US","e":"start"}

如果有人可以帮助如何使用powershell将其转换为JSON(我使用ConvertTo-JSON进行了尝试,但没有成功),那将是很棒的。

尚不清楚您想要什么。 如果您想要有效的 JSON字符串,则只需删除字符串的第一部分(此部分: TRACE 2016-06-23 08:47:54,803 ),然后完成以下操作:

$data = 'TRACE 2016-06-23 08:47:54,803 {"x":"0.0000179000","l":"Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.34209)","a":"Get","p":"345","u":"dae824a6-144b-4135-a6fd-01584f06a27f","i":"10.0.2.166","s":"US","e":"start"}'

$json = $data.Substring($data.IndexOf("{"))

如果要将其从JSON转换为对象,则仍然需要将字符串转换为有效的JSON字符串,然后可以简单地执行以下操作:

$myObject = ConvertFrom-Json $json
# 'TRACE 2016-06-23 08:47:54,803 {"x":"0.0000179000","l":"Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.34209)","a":"GetUserStartedWatchingMedias","p":"195","u":"dae824a6-144b-4135-a6fd-01584f06a27f","i":"10.0.2.166","s":"EU-WS-A-5","e":"start"}'

foreach ($row in  (Get-Content -LiteralPath C:\TEMP\IIS_Logs\IIS_Logs.txt ) )
{
    if ($row -like '*}')
    {
        $Arr = $row -split ' ' ;
        $Arr = $Arr -ne ' ' ;

        $RecordDate = $Arr[1]+' '+$Arr[2];
        $Json = $row.Substring($row.IndexOf("{"),($row.IndexOf("}")-$row.IndexOf("{")+1));
        ConvertFrom-Json -InputObject $Json | ConvertTo-Csv -Delimiter "," -NoTypeInformation | Out-File 'C:\TEMP\IIS_Logs\test.txt'
    };
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM