JSON ↔ YAML と XML 変換の境界
JSON が YAML の部分集合だという主張は一方向しか保証せず、XML には公式の JSON マッピングがまったくありません。すべては慣習に乗っています。
JSON と YAML、XML、CSV、TypeScript、Java、Go、SQL の変換は決して無損失ではありません。重要なのは、どこで損失が起きるかを明示することです。
8 件の記事JSON が YAML の部分集合だという主張は一方向しか保証せず、XML には公式の JSON マッピングがまったくありません。すべては慣習に乗っています。
CSV は二次元、JSON は木構造です。変換の難しさはコードではなく、配列をどう平坦化し、型をどう保つかを事前に決めることにあります。
ネストした構造、不揃いなフィールド、配列の配列が、JSON から表計算への変換の破綻点です。結果までの時間順に四つの方法を並べ、それぞれのトレードオフを示します。
JSON を SQL INSERT に変えると、ネストしたテーブルの分割、NULL と欠落の区別、エスケープ、方言差が隠れます。実行可能な文と罠ごとの比較表を提供します。
サンプル JSON からインターフェースを生成するのは仕事の半分です。任意フィールド、null、ユニオン、日付、大きな整数には人の手が必要で、型は実行時検証をしてくれません。
教程でもっとも頻出する yq -P input.json > output.yaml は、実測でも JSON を出力します。本記事は yq v4.44.6、PyYAML 6.0.3、js-yaml を 2.39 MB のサンプルで走らせ、出力形式が拡張子で決まることを四組のデータで示し、一括変換・引用符・インデント・大きな整数の精度まで正しい書き方を提示します。
実際のコンバーターで九つの実験を実施。先頭行キー方式はフィールドを黙って欠落させ、null・欠損・空文字はすべて空セルになり、20 桁の整数は JSON.parse の時点で精度を失い、ドットを含むキーは別々のパスが同一列に衝突します。ヘッダーの生成方法、値の変化、下流用途ごとの戦略選択を解説します。
本サイトのジェネレーターで JSON → Java のデフォルト出力を実測——数値は Double、ネストしたオブジェクトは static 内部クラス、Jackson アノテーションは一切生成されません。金額の精度、フィールド名の対応、ジェネリクス消去、未知フィールド、日付とデフォルトコンストラクタの 5 つを、コピーして使えるコードとともに解説します。