Ошибка недопустимого JSON-примитива при преобразовании файла JSON

При попытке конвертировать JSON файл через PowerShell:

$json = Get-Content "C:\folder1\test.txt"

$json | ConvertFrom-Json 

write-output $json

Я получаю следующую ошибку:

недействительный примитив json: [. (System.argunment.exception)

Ответ 1

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

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

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

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

Write-Output $json

Ответ 2

Вы должны проверить свой входной файл JSON для символов, которые не были экранированы с помощью "\"

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

{
    Object1
}
{
    Object2
}

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

[{
     Object1
 },
 { 
     Object2
 }]

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

Ответ 3

Вы получите эту ошибку, если ваши входные данные начинаются так:

data: [
  {
    ...
  },
  {
    ...
  }
]

Вам нужно удалить data: (и в этом примере есть только [ и ]):

[
  {
    ...
  },
  {
    ...
  }
]