ツール利用 FAQ:データ、ファイル、エクスポート
データはアップロードされるのか、どれくらいのファイルが動くのか、何かローカルに保存されるのか、なぜ日本語がエスケープになるのか。オンライン JSON ツールの実際の境界を十の質問で明示します。
このサイトのツールと JSON 仕様について最もよくある質問を、場面別にまとめました。曖昧な結論ではなく、すぐ行動できる答えを示します。
25 件の記事データはアップロードされるのか、どれくらいのファイルが動くのか、何かローカルに保存されるのか、なぜ日本語がエスケープになるのか。オンライン JSON ツールの実際の境界を十の質問で明示します。
コメントは許されるか、末尾カンマがなぜエラーか、キーに引用符は必要か、9007199254740993 が変わる理由。十二の結論を RFC 8259 に照らして確認します。
パスクエリは JSONPath か Pointer か、Patch と Merge Patch の選び方、Schema が止められるもの、ドラフト版の選び方。一度に解説します。
数十 MB の JSON ファイルが開かない理由、深いクローンのコスト、__proto__ 汚染の防ぎ方、XSS の侵入経路。症状別に並べた十の応急処置の結論です。
命名スタイル、時刻形式、null の意味論、enum の形、設定形式、フィクスチャの整理、マージ競合。チームが実際に議論する十二のトレードオフです。
RFC 8259 にコメント構文はなく、`//` やブロックコメントは `JSON.parse` を失敗させます。JSON5 や JSONC、`_comment` フィールド、Schema の description、YAML を使いましょう。
末尾カンマは JavaScript のオブジェクトリテラルでは合法で、JSON では致命的です。正確なエラー、原因となる RFC 8259 の文法、実際に効く三つの修正を示します。
UTF-8 BOM は見えない 3 バイトなので、`JSON.parse` が最初の文字で失敗し、1 行 1 列目を報告します。そのためファイルが空や途中切れに見えます。
JSON には十進数リテラルしかありません。JSON.stringify は NaN と Infinity を警告なしに null にするので、「数値フィールドが時々 null」という現象が本番で起き続けます。
2^53-1 を超える整数は JSON.parse で精度を失います。スノーフレーク ID、注文番号、データベースの bigint がすべて該当するので、端から端まで文字列で保ちましょう。
\u4e2d\u6587 のエスケープは正当な Unicode で、エンコーディング障害ではありません。本当の文字化けは見た目が違い、両者を見分けることが何を直すべきかを決めます。
厳密な上位集合の順序:JSONC はコメントを追加し、JSON5 は単一引用符、引用符なしキー、末尾カンマ、16 進数を追加します。選び方を誤るとエディタではなく API が壊れます。
JSON は波括弧で区切り、YAML はインデントで区切ります。機械には JSON、設定を編集する人間には YAML。コメント、アンカー、複数文書の構造は変換で失われます。
JSON Pointer はキーとして保存できる一意の住所で、JSONPath はクエリ言語です。誤って使うと設定更新が壊れるか、壊れた JSONPath を再発明することになります。
Schema は構造と型を統制し、業務上の意味は統制しません。フィールド欠落、型違い、範囲外の enum を止め、金額がゼロ超といった規則はコードに残ります。
2020-12 が現行で、$defs、prefixItems、unevaluatedProperties を加えますが、多くのツールは依然 draft-07 しか話しません。ツールチェーン全体が対応するかで選びます。
json-schema-to-typescript と quicktype は一コマンドで .d.ts を出力しますが、それは草案です。任意性、ユニオン、additionalProperties、日付には人の手が必要です。
順序を誤った最適化はライブラリの入れ替えを無駄にします。ネットワーク、パース、描画を別々に測り、パース回数を減らし、ペイロードを縮め、ストリーミングします。
JSON.parse は __proto__ を普通のキーとして扱います。損傷は Object.prototype に書き込む再帰マージで起き、以後すべてのオブジェクトが攻撃者のプロパティを継承します。
JSON は決してそれ自体では実行されません。XSS はそれを HTML として扱った瞬間に起きます。サーバー側の文字列連結、フロントエンドの innerHTML、JSON を script タグに直接インライン化する場合です。
プライバシーポリシーを読む必要はありません。ネットワークパネルを開き、オフラインで試し、更新して何かが残るか見ます。二分、三つの確認、信頼は不要です。
固定の限界はなく、制約はタブのメモリ予算です。20MB のファイルは通常パース後に 60〜100MB になり、ハイライトされた DOM はさらに倍にできます。
裸のオブジェクトはメタデータが必要になるまで綺麗で、完全なエンベロープは安全だが冗長です。ほとんどのプロジェクトでは結果に HTTP ステータス、データに安定したエンベロープを使います。
エポック数と ISO 文字列にはそれぞれトレードオフがありますが、実際に壊すのは混在です。オフセット付き ISO 8601 を使い、UTC で保存し、ユーザーのタイムゾーンで表示します。
`null` はフィールドが存在し値がないことを示し、省略はフィールドが存在しないことを示します。PATCH ボディ、設定マージ、フォームの初期表示で差が牙をむきます。