2017-01-17 9 views
4

PowershellでSwagger JSON文書を更新しようとしています。オブジェクトにまだ存在していない場合は、いくつかのプロパティと値を追加する必要があります。JSON形式を破棄せずにJSONファイルを更新する

これを行うためのコードは非常に単純です:

$swaggerDoc = (Get-Content $filePath -raw | ConvertFrom-Json) 

$swaggerDoc | Add-Member -Name host -MemberType NoteProperty -Value "swagger.io" -Force 
$swaggerDoc | Add-Member -Name schemes -MemberType NoteProperty -Value @("https") -Force 

$swaggerDoc | ConvertTo-Json | Set-Content $filePath 

私が持っている問題は、私は戻ってファイルに保存するときJSONは完全に破壊されることを示します。たとえば

"get": { 
    "tags": [ 
     "Links" 
    ], 
    "operationId": "Links_GetAll", 
    "parameters": [], 
    "responses": { 
     "200": { 
     "description": "Returns all the available links in the system", 
     "schema": { 
      "type": "array", 
      "items": { 
      "$ref": "#/definitions/AdministrativeLink" 
      } 
     }, 
     "x-nullable": true 
     } 
    } 
    } 

なり

"get": "@{tags=System.Object[]; operationId=Links_GetAll; parameters=System.Object[]; responses=}", 

Powershellでこれを行う方法に関する他の例はありませんでした。私の構文やパラメータ私は元の形式を保持するために行方不明ですか?

答えて

3

ConvertTo-Jsonを使用する場合、JSONの正しいフォーマットを保持するには-Depthを使用してください。例については

$swaggerDoc | ConvertTo-Json -Depth 10 | Set-Content $filePath 

私はまた、PowerShellのことで、それの有効なJSONを読みやすくするために、あなたのJSONの周りにブラケットを追加する必要がありました。

0

切り取りして貼り付ける場合は、書式を削除してください。たとえば、Macを使用しているときに "Command + Shift + V"を押して貼り付けると、切り取りと貼り付け時に書式が削除されます。また、JSONファイルの中で、 "ENTER"とスペースのみの "TABS"を使用しないでください。

+0

あなたの環境について何も記載していないので、私は推測しました。 – ddlingo

+0

このJSONファイルはツールから生成され、スペースと改行のみが含まれています。 – mclark1129