PowerShellを介してJSONファイルを変換する場合:
$json = Get-Content "C:\folder1\test.txt"
$json | ConvertFrom-Json
write-output $json
次のエラーが発生します。
無効なjsonプリミティブ:[。
(system.argunment.exception)
入力データまたは完全なエラーメッセージを提供しなかったので、ここで外に出ますが、問題は、出力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
"\"で適切にエスケープされていない文字がないかJSON入力ファイルを確認する必要があります
この問題は、次のように誤ってフォーマットされた入力JSONファイルでも発生します。
{
Object1
}
{
Object2
}
修正されたフォーマット:
[{
Object1
},
{
Object2
}]
フォーマットが修正されれば、問題はなくなりました。
私もこのエラーを受け取りました。私のjsonファイルを調査したところ、JSONの一部が無効であることがわかりました。私は配列の最後のオブジェクトを次のようにコンマで終了していました:
[{ ..},]
コンマを削除すると、自分の問題が解決しました。
つまり、無効なJSONが原因でこの問題が発生しました。
入力データが次のように始まる場合、このエラーが発生します。
data: [
{
...
},
{
...
}
]
data:
を削除する必要があります(この例では[
と]
のみが含まれています)。
[
{
...
},
{
...
}
]