У меня есть файл JSON, где в качестве значения ключа используется строка 'address'. Я использовал ConvertFrom- Json, чтобы получить JSON в powershell. Когда я пытаюсь использовать значение ключа 'address', я получаю следующий вывод:
System.Object&, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e Address(int )
Когда я использую точно такой же код для других объектов из файла JSON, он работает, поэтому вопрос I Я спрашиваю, как я могу решить проблему с объектом 'address'.
Код, который я использовал для преобразования в JSON. Это действительно большой файл, поэтому на этапе тестирования я читаю JSON в $ json по одной строке за раз.
$encoding = [System.Text.Encoding]::UTF8
$i = 0
$ig = 0
$output = @()
$Importfile = "Path\file.jsonl"
$Exportfile = "Path\file.csv"
#If file exists, it will be removed
if (test-path $Exportfile) {
Remove-Item -path $Exportfile
}
foreach ($line in [System.IO.File]::ReadLines($Importfile, $encoding)) {
$json = $line | ConvertFrom-Json
$index = 1
foreach ($item in $json.history.addresses) {
$CSVLine = "" | Select-Object Addressstreet, Addresspostalcode, Addresscity, Addressstate, Addresscountry, Addresslat, Addresslng, AddressformattedValue, Datum
$CSVLine.Addressstreet = $json.history.addresses.address.street | Select-Object -First $index | Select-Object -Last 1
$CSVLine.Addresspostalcode = $json.history.addresses.address.postalcode | Select-Object -First $index | Select-Object -Last 1
$CSVLine.Addresscity = $json.history.addresses.address.city | Select-Object -First $index | Select-Object -Last 1
$CSVLine.Addressstate = $json.history.addresses.address.state | Select-Object -First $index | Select-Object -Last 1
$CSVLine.Addresscountry = $json.history.addresses.address.country | Select-Object -First $index | Select-Object -Last 1
$CSVLine.Addresslat = $json.history.addresses.address.lat | Select-Object -First $index | Select-Object -Last 1
$CSVLine.Addresslng = $json.history.addresses.address.lng | Select-Object -First $index | Select-Object -Last 1
$CSVLine.AddressformattedValue = $json.history.addresses.address.formattedValue | Select-Object -First $index | Select-Object -Last 1
$CSVLine.Datum =$json.history.addresses.date | Select-Object -First $index | Select-Object -Last 1
$output += $CSVLine
$index++
}
$i++
$ig++
if ($i -ge 20) {
$output | Export-Csv -Path $Exportfile -NoTypeInformation -Delimiter ";" -Encoding UTF8 -Append
$i = 0
$output = @()
Write-Output $ig
}
if ($ig -ge 120){
break
}
}
$output | Export-Csv -Path $Exportfile -NoTypeInformation -Delimiter ";" -Encoding UTF8 -Append
Write-Output $ig
Структура JSON:
{"history": {
"names": [{
"name": {
"name": "",
"legalForm": "GmbH"
},
"date": "2007-09-18"
}],
"addresses": [{
"address": {
"street": "",
"postalCode": ""
},
"date": "2019-08-05"
}]}}
Кто-нибудь знает, как я могу решить эту проблему без изменения значения ключа 'address' в файле JSON?