web-dev-qa-db-ja.com

ConvertFrom-Json:無効なJSONプリミティブ:

CMSエンドポイントからJSONファイルをフェッチするスクリプトを実行して、それをパイプラインでconvertfrom-jsonに渡そうとしました。しかし、「JSONプリミティブが無効です」というエラーが表示されます。

ConvertFrom-Json:無効なJSONプリミティブ:。 D:\ AzureProject\SetupusingParameterfile.ps1:13 char:75に

 $JsonContent = Get-Content $TemplateParameterFileLocal -Raw | Conver ...

CategoryInfo:NotSpecified:(:) [ConvertFrom-Json]、ArgumentException + FullyQualifiedErrorId:System.ArgumentException、Microsoft.PowerShell.Commands.ConvertFromJsonCommand

私のJSONパラメーターファイルの構造は、Azureパラメーターファイルの構造がどのようにある必要があるかインラインであり、サンプルは以下のとおりです。

{
"$schema": "http://schema.management.Azure.com/schemas/20111-01-01/deploymentParameters.json#",
"contentVersion":"1.0.0.0",
"parameters": 
        {
            "hostingPlanName": {"value": "pilotHosting"},
            "hostingEnvironment": {"value": "pilotHostingenv"},   
            "serverFarmResourceGroup": {"value": "Pilot1H"},
            "sqlserverName": {"value": "pilotsrvrtrialrun11"},
            "administratorLogin": {"value": "sites1H"},
            "administratorLoginPassword": {"value": "abcdefg"},
            "serverName": {"value": "Pilotwebserver"},
            "databaseUsername": {"value": "pilot1Hattabc"},
            "databasePassword": {"value": "pilotdbabc1H"},
        }
}

注:この投稿の目的は、AzureプロジェクトのPoCで生じたいくつかのことを共有し、後で誰かに仕えることを期待することです。

12
H Bala

アプローチ1:-Raw各行を個別に読み取って配列として保存する代わりにGet-Contentがオブジェクトを作成するように、Get-Contentで-Rawを使用しようとしました。

 $JsonContent = Get-Content $TemplateParameterFileLocal -Raw | ConvertFrom-Json

アプローチ2:Out-String Get-Contentをパイプして|以下のアウトストリング:

$JsonContent = Get-Content $TemplateParameterFileLocal | Out-String | ConvertFrom-Json

IDEでJSONを確認最後に、CMSで生成されたJSONの保存されたコピーを開いたときのIDE通知を思い出しました。EOF予期されていますが、上記のJSON構造に気づいた場合、「、」が取得され、この問題が発生していました。

-RawとOut-Stringの両方の実行を再試行しましたが、期待どおりに機能していました。

19
H Bala