Я пытаюсь преобразовать текстовый файл в строку в формате JSON, но двойные кавычки расположены неправильно.
My file.txt содержит следующую структурированную информацию(две пустые строки в начале):
<code></p>
<p>adapter_name : empty1
route_age : 10
route_nexthop : 172.0.0.1
route_protocol : NETMGMT1
speed : null </p>
<p>adapter_name : empty2
route_age : 100
route_nexthop : 172.0.0.2
route_protocol : NETMGMT2
speed : null </p>
<p>adapter_name : empty3
route_age : 1000
route_nexthop : 172.0.0.3
route_protocol : NETMGMT3
speed : null
Мой код:
$data = Get-Content C:\scripts\file.txt | %{$_.PSObject.BaseObject}
$data | ConvertTo-Json
Без этой части:
<code>%{$_.PSObject.BaseObject}
Это просто нисходящийглубоко в дерево объектов, что может занять много времени.
Фактический результат:
<code>
[
"",
"",
"adapter_name : empty1",
"route_age : 10",
"route_nexthop : 172.0.0.1",
"route_protocol : NETMGMT1",
"speed : null "
"",
"adapter_name : empty2",
"route_age : 100",
"route_nexthop : 172.0.0.2",
"route_protocol : NETMGMT2",
"speed : null "
"",
"adapter_name : empty3",
"route_age : 1000",
"route_nexthop : 172.0.0.3",
"route_protocol : NETMGMT3",
"speed : null "
]
И ожидаемый результат:
[
{
"adapter_name" : "empty1",
"route_age" : 10,
"route_nexthop" : "172.0.0.1",
"route_protocol" : "NETMGMT1",
"speed" : null
},
{
"adapter_name" : "empty2",
"route_age" : 100,
"route_nexthop" : "172.0.0.2",
"route_protocol" : "NETMGMT2",
"speed" : null
},
{
"adapter_name" : "empty3",
"route_age" : 1000,
"route_nexthop" : "172.0.0.3",
"route_protocol" : "NETMGMT3",
"speed" : null
}
]
Примеры 4 и 5 в ссылке https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/convertto-json?view=powershell-6 показывает, как использовать командлет ConvertoTo-Json в аналогичной ситуации, но без проблем.