API ログや設定ファイルから出てくる JSON は、たいてい1本の長い行になっており、パースできない JSON はたいてい見えない場所で失敗しています。このツールはそれを読めるようにインデントし、小さくしたいときはミニファイし、壊れている場合は行と列を教えてその行を表示します。
多くの場合、あなたはここに JSON をきれいにするために来ているのではありません - 何かがそれを拒否し、理由を言わなかったからここに来ているのです。パーサーは行、列、そして期待していた内容を報告し、ツールはその行を前後2行とともに表示します。設定ファイルの400行目で見つからないカンマも、場所さえわかれば30秒で直せます。
JSON はこの両方を一度も許可したことがありませんが、実際に人から渡されるファイル - tsconfig、VS Code の設定、手作業で編集された何か - はそれらでいっぱいです。オプションにチェックを入れるとパース前にそれらを取り除き、ツールはその後、何個のコメントと何個のカンマを削除したかを明示します。これはオプトインであり、正確に報告されます。なぜなら、ドキュメントを黙って変えてしまうフォーマッターは、拒否するフォーマッターよりも悪いからです。
あなたの意図を推測することはありません。上記の2つの削除を除けば、何も修復されません:閉じられていない波括弧、シングルクォートのキー、クォートのないキーは報告されるだけで、書き換えられることはありません。キーのソートと再インデントは、配列の順序も文字列も決して変えません。次のセクションでは、それでも出力が貼り付けた内容と異なる可能性のある、いくつかのケースを挙げます。
JSONは解析されてから書き出し直されるため、いくつかの要素は正規化された形で戻ります。数値は書き直されます:1.50 は 1.5 に、1E3 は 1000.0 に、-0 は 0 になり、64ビット浮動小数点数に収まらない桁数の小数は丸められます(0.1000000000000000055 は 0.1 になります)。整数は 4,300 桁までそのまま保持されます(それより長いものは拒否されます)。オブジェクト内でキーが重複している場合、最後の値だけが残り、警告は出ません。NaN、Infinity、-Infinity は、標準のJSON(RFC 8259)では認められていないにもかかわらず受け入れられ、そのまま出力されます。また、1e400 のように浮動小数点数には大きすぎる数は Infinity として出力されます。これらが連携先のシステムにとって重要な場合は、エラーなしの結果を信用する前にご自身で確認してください。
パースのためにサーバーに送信され、同じレスポンスの中でそのまま返されます。ディスクへの書き込み、キャッシュ、ログ記録は一切行われず、利用記録には件数だけが残ります - サイズ、ネストの深さ、選んだモード - ドキュメントそのものは決して残りません。
たいていはコメント、末尾のカンマ、シングルクォート、クォートなしのキーが原因です - これらはすべて設定ファイルではよくあるものですが、どれも正当な JSON ではありません。最初の2つについては「コメントと末尾のカンマを許可」にチェックを入れてください。それ以外は本当に無効なので修正する必要があります。
1回のリクエストにつき 2,000,000 文字までです。それより長いテキストは、正確な長さを示したうえで拒否されます。そのサイズのファイルには、jq のようなコマンドラインツールのほうが適しています。
ログパイプラインやストリーミングローダーは、大きな1つの配列ではなく、1行につき1つの JSON オブジェクトを読み込みます。これを選ぶと、トップレベルの配列が1行につき1件のコンパクトなレコードとして返されます。
いいえ。オブジェクトのキーの順序は JSON において意味を持たず、意味を持つ配列の順序は決して変更されません。ソートがあるのは、同じドキュメントの2つのバージョンをノイズなしで比較できるようにするためです。
Microsoft 365 版の Excel では、.json ファイルとして保存し、Data > Get Data > From File > From JSON(データ > データの取得 > ファイルから > JSON から)を選びます。Power Query が開き、最上位の配列は List として表示されます。To Table(テーブルへの変換)で Records の列になり、列見出しの展開ボタン(2 本の矢印)で各キーが別々の列に分かれます。入れ子の配列を展開すると、要素ごとに 1 行ずつ増えます。Power Query には有効な JSON ドキュメントが 1 つ必要なので、まずここで行と列が示されるエラーを直し、整形または最小化の出力を保存してください。JSON Lines の出力はログツール向けです。このツール自体は JSON を CSV や Excel に変換しません。
Python には検証機能が標準で入っています。python -m json.tool data.json はインデント 4 スペースで文書を出力するか、Expecting ',' delimiter: line 3 column 3 のようなメッセージで停止します。jq が入っていれば、jq . data.json で整形でき、jq empty data.json は検証だけを行い、ファイルが正しければ何も出力しません。どちらもコメントや末尾のカンマを受け付けないため、それらを含む設定ファイルはそこでエラーになります。ここに貼り付けて「コメントと末尾のカンマを許可」にチェックを入れると、何が削除されたかを確認できます。
パーサーがオブジェクトのキーを待っていたのに、別のものを見つけたという意味です。多くの場合、キーがシングルクォートで囲まれているか引用符がありません。Python や JavaScript からコピーした {'name': 'Asha'} は 1 行目 2 列目で止まります。JSON ではすべてのキーと文字列をダブルクォートで囲む必要があり、このツールは引用符を書き換えないため、自分で直してください。同じメッセージが {"a": 1,} のように閉じ波かっこの位置で出る場合は末尾のカンマが原因です。「コメントと末尾のカンマを許可」にチェックを入れると削除されます。True、False、None の位置で Expecting value が出る場合は Python の値です。JSON では true、false、null と小文字で書きます。Python では json.dumps(data) は正しい JSON を出力しますが、print(data) は出力しません。エラーは Python のパーサーが出すとおり英語で表示されるので、メッセージをそのまま検索できます。
パーサーが完全な JSON の値を 1 つ読み終えた後に、さらにテキストを見つけたという意味です。よくある原因は、1 行に 1 つのオブジェクトを書いた JSON Lines(NDJSON)のログ(2 行目 1 列目で止まります)、続けて貼り付けた 2 つの文書、最後の閉じ波かっこの後の // コメント(「コメントと末尾のカンマを許可」で削除されます)です。このツールは一度に 1 つの文書を検証するので、1 件だけ貼り付けるか、各レコードをカンマで区切って [ ] で囲んでください。その後 JSON Lines を選ぶと、また 1 行に 1 件ずつ書き出されます。