結論

JSONの整形は、読みやすくなった見た目だけでは確認を終えられません。 PowerShellで読み直して出力するときは、オブジェクトの深さや数値の型によって、元の内容を同じ形で残せるかが変わります。

JSON整形・CSV相互変換仮のデータで整形後の階層と値を見る登録なしで使えます開く

今回はPowerShell 7.6.5と現行のJSON整形に、架空データ4件を渡しました。社内ファイルの送信や、エディタの追加インストールは行っていません。Windowsにどの版が入っているかは、端末ごとに別の条件です。

JSON4作例の階層と数値の違いをまとめた自作図

作例4件を実行し内容を読み直した

改行やインデントの一致ではなく、読み直した値と構造を比較しました(n=4件、2026-10-01)。PowerShellではConvertFrom-Jsonで読み、ConvertTo-Jsonの既定設定とDepth 20の2通りで出力しています。サイト側は現行の解析・整形処理をそのまま実行しました。

架空の入力 PowerShell既定設定 Depth 20 現行JSON整形
amount=100、name=sample 値・型が一致 一致 一致
a→b→c→d=1と入れ子 cの中身が文字列に変化 構造が一致 構造が一致
idが数値9007199254740993 数値が一致 一致 丸めず扱えない旨のエラー
同じidを文字列にしたもの 文字列が一致 一致 文字列が一致

PythonのJSON読込みでも、Depth 20の4出力と、サイトが受け付けた3出力の値・型が元と一致しました。深い例の既定出力は一致せず、警告が1件出ています。エラーになった数値の例を、整形に成功した件数へ加えていません。

この7件の一致は、どんなJSONでも同じ結果になる保証ではありません。 配列、日時らしい文字列、重複する名前、端末の版や設定は今回の試験条件から外れます。

Depthは空白の数とは違う

Depthは出力へ含めるオブジェクトの深さの設定です。ConvertTo-Jsonの公式説明では、既定値について一次資料の節に引用したとおり書かれています。

実測に使った深い例は次のものです。

json {"a":{"b":{"c":{"d":1}}}}

既定設定の出力では、cにあったオブジェクトが"@{d=1}"という文字列になりました。JSONとして読める出力でも、元の構造とは違います。 Depth 20の出力では、dまでの階層が残りました。

今回と同じ処理の形は次のとおりです。sample.jsonはローカルの作例ファイル名です。

powershell Get-Content -LiteralPath '.\sample.json' -Encoding utf8 -Raw | ConvertFrom-Json | ConvertTo-Json -Depth 20

20は今回の作例で使った値で、すべての業務データに十分だと保証する上限ではありません。警告の有無と、必要な階層が出力に残ったかは別々に確認する材料になります。

数値と文字列は同じ桁でも違う型

整形前にJSONをオブジェクトへ読み直す工程があります。MicrosoftはConvertFrom-Jsonを一次資料の節に引用したとおり説明しています。

今回の16桁の数値はPowerShellで保持できましたが、現行のJSON整形は丸めず扱えない数値として停止しました。文字列の"9007199254740993"は、両方で文字列として保持されています。

JSONの仕様も、受け入れられる数値の範囲と精度について、実装の制限を認めています。

引用符を付ければ、数値から文字列へ型が変わります。 受け渡し先が数値を要求している項目を、その場で文字列へ変えても同じ契約を満たすとは限りません。作例の識別子と、実際の業務データの仕様は分ける必要があります。

深い階層と大きな識別子で確認する対象を分けた自作図

一次資料

本文で参照した一次資料の引用と出典をまとめます。

“The default value is 2.”

— Microsoft Learn「ConvertTo-Json」Depth https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/convertto-json?view=powershell-7.6(2026-10-01 到達)

“Converts a JSON-formatted string to a custom object or a hash table.”

— Microsoft Learn「ConvertFrom-Json」概要 https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/convertfrom-json?view=powershell-7.6(2026-10-01 到達)

“This specification allows implementations to set limits on the range and precision of numbers accepted.”

— RFC 8259「Numbers」 https://www.rfc-editor.org/rfc/rfc8259.html(2026-10-01 到達)

測っていないこと・ここから先は推論

実データの受渡し、外部APIの受理、社内の情報管理規則は測っていません。 4件の作例だけを比較しました。Windows PowerShell 5.1、他のエディタ、重複キー、配列の扱い、日時変換、巨大ファイル、すべての高精度数値は未測定です。通信の有無や安全性の検査とも区別します。

次の1手

整形前後で、必要な階層・値・型が残っているかを見ると、表示だけの変化と内容の変化を分けやすくなります。JSON整形の作例は、実データへ使う前に結果の読み方を確かめる材料です。

JSON整形・CSV相互変換大きな数値のエラーを内容の保証と混同しない登録なしで使えます開く