2014-06-27 5 views

ответ

9

Я выходящий на конечности здесь, так как вы не указали свои входные данные или полное сообщение об ошибке, но я думаю, что ваша проблема вызвана несоответствием формата между выходом Get-Content и ожидается вход ConvertFrom-Json.

Get-Content считывает входной файл в массив строк, тогда как ConvertFrom-Json ожидает данные JSON в одной строке. Кроме того, трубопровод $json в ConvertFrom-Json не меняет значение $json.

Изменить код ниже и ошибка должна disapear (при условии, что нет синтаксической ошибки в ваших входных данных):

$json = Get-Content 'C:\folder1\test.txt' | Out-String | ConvertFrom-Json 

Write-Output $json 
+1

Get-Content будет включать символы новой строки, поэтому вы захотите либо передать команду -join следующим образом: $ json = (Get-Content 'C: \ folder1 \ test.txt') -join "' n "| ConvertFrom-Json или просто передать -Raw-переключатель: $ json = (Get-Content 'C: \ folder1 \ test.txt') -Raw | ConvertFrom-Json Ссылка: https://technet.microsoft.com/en-us/library/Hh849898.aspx#code-snippet-4 –

+1

@DerekNutile 'Get-Content' создает массив строк (по одному для каждой строки из файла), который должен быть преобразован в одну строку перед подачей данных в 'ConvertFrom-Json' (иначе командлет попытается преобразовать каждую строку отдельно). Преобразование может быть достигнуто несколькими способами, например, путем объединения массива с символами новой строки, путем считывания файла с использованием параметра «-Raw» (только PowerShell v3 и только для новых) или путем прямого вывода результатов через «Out-String» , как в моем ответе. –

4

Вы должны проверить ваш входной файл в формате JSON для символов, которые не должным образом отделался а «\»

Я также видел этот вопрос с входной файл JSON, который был неправильно отформатированных следующим образом:

{ 
    Object1 
} 
{ 
    Object2 
} 

Исправленная формат:

[{ 
    Object1 
}, 
{ 
    Object2 
}] 

После того как формат был исправлен, у меня больше не было проблем.

+1

Кажется, командлет Powershell ConvertFrom-JSON не любит JSON, который не содержит открывающих и закрывающих квадратных скобок [] вокруг массивов. Вы получаете недопустимую ошибку Json. В соответствии с этим ответом я добавил квадратные скобки, и все было хорошо. Благодарю. – CarlR

Смежные вопросы