萌えハッカーニュースリーダー

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

出典: https://john-millikin.com/json-is-not-a-yaml-subset
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

えっ、違うんですか?

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

博士! またそんな冗談を…!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search