仕様と根拠
数え方
配列の要素のうち、オブジェクトであるものだけを数えます。項目名ごとに、その項目がある要素の数を出現数、オブジェクトの要素数に対する割合を出現率とします。1 つのオブジェクトに同じ項目名が複数あるときは、最後の値を 1 回と数えます。値は RFC 8259 3 節の種類(オブジェクト・配列・数値・文字列・真偽値・null)のどれかに分け、内訳を示します。
警告と情報の分け方
出現率が 100% でない項目と、null を除いて 2 種類以上の型が混ざる項目は警告にします。読み込む側が項目の存在や型を決め打ちしていると失敗しやすいためです。1 種類の型と null だけが混ざる項目、すべてが null の項目は情報にします。null は値がないことを表す書き方で、項目自体がないこととは別だからです。
配列でないとき・構文エラーのとき
最上位が配列でなければ集計せず、エラーにします。オブジェクト以外の要素(数値や文字列など)は集計から除き、警告で知らせます。JSON の構文が壊れているときは最初のエラーの位置を何行目の何列目かで示します。整形や詳しい構文エラーの説明が必要なときは整形用の JSON ツールで直してから貼り直します。
根拠にした仕様・資料
| 仕様・資料 | 確認日 | 使った箇所 |
|---|---|---|
| RFC 8259 The JavaScript Object Notation (JSON) Data Interchange Format | 2026年10月28日 | 3 節(値の種類: オブジェクト・配列・数値・文字列・false・null・true)・4 節(オブジェクトと項目名) |
指摘の段階
- エラー: 仕様に反していて、正しく読めない・処理できない入力です。
- 警告: 読めるものの、仕様の推奨に反する・矛盾する・意図と違う結果になりやすい入力です。
- 情報: 誤りではありませんが、知っておくとよい扱い(読み飛ばした部分や解釈)です。
入力の扱い(送信しない仕組み)
処理はすべてお使いのブラウザの中で行います。処理の本体はこのサイトから配信する小さなスクリプト(/app.js)で、外部のサービスやライブラリを読み込みません。ページはブラウザに通信を禁止させる設定(Content-Security-Policy の connect-src)つきで配信しており、入力した内容がサーバーや第三者へ送られることはありません。ファイルを選んだ場合も、端末の中で読み込むだけです。
このツールでできないこと(制約)
- 集計するのは配列の直下のオブジェクトの項目名だけです。入れ子の中の項目(user の中の name など)は、user の値がオブジェクトであることを数えるだけで、中の項目名は集計しません。
- 数値は大きさや桁数を区別せず、すべて「数値」として数えます。整数と小数の別や、日付らしい文字列の判別はしません。
- JSON Lines(1 行に 1 つの JSON)や、コメント・末尾カンマを許す JSON5・JSONC は、JSON としてはエラーになります。
- ファイルは UTF-8 として読みます。Shift_JIS などほかの文字コードのファイルは文字化けすることがあります。
ご利用にあたって
- 集計の対象は JSON の構文と値の型に限ります。項目の意味や、値が正しいかどうかは判断しません。
- 大きな JSON はお使いの端末の性能によって処理に時間がかかることがあります。