web-dev-qa-db-ja.com

JSONファイルの変換時の「無効なJSONプリミティブ」エラー

PowerShellを介してJSONファイルを変換する場合:

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

$json | ConvertFrom-Json 

write-output $json

次のエラーが発生します。

無効なjsonプリミティブ:[。
(system.argunment.exception)

15
user3770612

入力データまたは完全なエラーメッセージを提供しなかったので、ここで外に出ますが、問題は、出力Get-Contentが提供するものと入力ConvertFrom-Jsonが予期するものとの間の形式の不一致が原因であると思います。

Get-Contentは、入力ファイルを文字列の配列に読み取りますが、ConvertFrom-Jsonは、JSONデータを単一の文字列として扱います。また、$jsonConvertFrom-Jsonにパイプしても、$jsonの値は変更されません。

コードを次のように変更すると、エラーが消えます(入力データに構文エラーがない場合)。

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

Write-Output $json
15
Ansgar Wiechers

"\"で適切にエスケープされていない文字がないかJSON入力ファイルを確認する必要があります

この問題は、次のように誤ってフォーマットされた入力JSONファイルでも発生します。

{
    Object1
}
{
    Object2
}

修正されたフォーマット:

[{
     Object1
 },
 { 
     Object2
 }]

フォーマットが修正されれば、問題はなくなりました。

12
itrjll

私もこのエラーを受け取りました。私のjsonファイルを調査したところ、JSONの一部が無効であることがわかりました。私は配列の最後のオブジェクトを次のようにコンマで終了していました:

[{ ..},]

コンマを削除すると、自分の問題が解決しました。

つまり、無効なJSONが原因でこの問題が発生しました。

0
bpilling

入力データが次のように始まる場合、このエラーが発生します。

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

data:を削除する必要があります(この例では[]のみが含まれています)。

[
  {
    ...
  },
  {
    ...
  }
]
0
uranibaba