PowerShellで、要素1つの配列を配列として扱う方法

K_H 0 評価のポイント
2025-03-12T12:09:56.9066667+00:00

こんにちは、お世話になります。
PowerShellで
@("1","1") | convertto-json
とすると
[

"1",

"1"

]
と返ります。しかし
@("1") | convertto-json
とすると
[

"1"

]
とはならず
"1"
となります。
要素が1つであっても配列としてJSONを書き出したいのですが、方法はありますでしょうか?
ちなみに
@(,"1") | convertto-json

"1"
ですし
,@("1") | convertto-json

{

"value":  [

              "1"

          ],

"Count":  1

}
のような展開がなされてしまいます。

PowerShell
PowerShell
コマンドライン シェルと関連するスクリプト言語で構成される Microsoft タスク自動化および構成管理フレームワークのファミリ。
30 件の質問
0 件のコメント コメントはありません
{count} 件の投票

1 件の回答

並べ替え方法: 最も役に立つ
  1. gekka 11,456 評価のポイント MVP
    2025-03-12T14:03:54.1633333+00:00

    PowerShell 7 なら-AsArrayをつけて

    @("1") | ConvertTo-Json -AsArray
    @("A","B","C") | Select -First 1 | ConvertTo-Json -AsArray
    

    PowerShell 5 なら配列をパイプで渡さずに、ConvertTo-Jsonに直接渡す。
    パイプの結果を渡したかったらパイプの結果を、ConvertTo-Jsonに渡す

    Write-Host "パイプを通して渡すのではなく" -ForegroundColor Red
    @("1") | ConvertTo-Json
    @("A","B","C") | Select -First 1 | ConvertTo-Json
    
    Write-Host "InputObjectとして渡す" -ForegroundColor Green
    ConvertTo-Json @(1)
    ConvertTo-Json @(@("A","B","C") | Select -First 1)
    
    0 件のコメント コメントはありません

お客様の回答

回答は、質問作成者が [承諾された回答] としてマークできます。これは、ユーザーが回答が作成者の問題を解決したことを知るのに役立ちます。