我有這個字串
[{listenport:443,connectaddress:10.1.10.20,connectport:443,firewallrulename:port443,direction:Inbound,action:Allow,protocol:TCP},{listenport:80,connectaddress:10.1.10.20,connectport:80,firewallrulename:port80,direction:Inbound,action:Allow,protocol:TCP}]
我想知道如何撰寫一個函式將其轉換為
[{"listenport":"443","connectaddress":"10.1.10.20","connectport":"443","firewallrulename":"port443","direction":"Inbound","action":"Allow","protocol":"TCP"},{"listenport":"80","connectaddress":"10.1.10.20","connectport":"80","firewallrulename":"port80","direction":"Inbound","action":"Allow","protocol":"TCP"}]
我嘗試使用 insert 和 indexof ,但不知道如何處理整個字串
uj5u.com熱心網友回復:
如果您確實必須使用這種格式并且不能生成格式良好的 JSON,那么至少在您的示例輸入中,屬性名稱和值都僅由屬于.或屬于\w正則運算式類別的字符組成,因此單個-replace可以操作:
@'
[{listenport:443,connectaddress:10.1.10.20,connectport:443,firewallrulename:port443,direction:Inbound,action:Allow,protocol:TCP},{listenport:80,connectaddress:10.1.10.20,connectport:80,firewallrulename:port80,direction:Inbound,action:Allow,protocol:TCP}]
'@ -replace '[\w.] ', '"$&"'
結果是格式良好的 JSON,您可以通過管道將其ConvertFrom-Json用于 PowerShell 中的 OO 處理。
如果您只能假設屬性名稱僅由\w字符組成:
@'
[{listenport:443,connectaddress:10.1.10.20,connectport:443,firewallrulename:port443,direction:Inbound,action:Allow,protocol:TCP},{listenport:80,connectaddress:10.1.10.20,connectport:80,firewallrulename:port80,direction:Inbound,action:Allow,protocol:TCP}]
'@ -replace '(\w ):', '"$1":"' -replace '\}|(?<!\}),', '"$&'
uj5u.com熱心網友回復:
最終通過使用替換破解了它
$proxyinfosjson = $proxyinfosjson.Replace(',', '","').Replace('{', '{"').Replace('}', '"}').replace(':', '":"').Replace('}"', '}').Replace('"{', '{')
太丑了..不以此為傲..但有效..
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/437601.html
