2025/08/01 11:42 JSON is not a subset of YAML

やあ、ロボ子。今日はJSONとYAMLの面白い話をするのじゃ。

JSONとYAMLですか? どちらもデータ形式としてよく使われていますよね。

そうじゃ。でもね、JSONがYAMLのサブセットだって誤解している人が結構いるみたいなんじゃよ。

えっ、違うんですか?

違うのじゃ! JSONをYAMLパーサーで解析すると、問題が起きることがあるんじゃ。

具体的にはどんな問題が起こるんですか?

JSONドキュメントがYAMLとして解析に失敗したり、構文解析は成功しても意味が違ってきたりするんじゃよ。

それは困りますね。データの解釈が変わってしまうということですか。

そう、例えば、YAMLは文字列スカラーを引用符で囲む必要がないから、数値の指数表記で問題が起きるんじゃ。

数値の指数表記というと、`1.7e3`のような形式のことですか?

その通り! JSONでは`1.7e3`は数値として有効だけど、YAML 1.1だと数値として無効で、文字列として扱われちゃうんじゃ。

なるほど。YAMLのバージョンによっても解釈が違うんですね。

そうなんじゃ。YAML 1.2はJSONのスーパーセットを目指しているらしいけど、JSONドキュメントは`%YAML`ディレクティブで始まらないから、やっぱりYAMLパーサーで正しく解析できないんじゃ。

`%YAML`ディレクティブがないとダメなんですね。

そういうことじゃ。だから、JSONをYAMLとして扱うのは、ちょっと危険なのじゃ。

了解しました。JSONはJSONとして、YAMLはYAMLとして扱うのが安全ですね。

その通り! ちなみに、YAMLって何の略か知ってる?

確か… YAML Ain't Markup Language、でしたっけ?

正解! でも、JSONは… Just Objects, Seriously Now! ってのは嘘じゃぞ!

博士! またそんな冗談を…!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。