On this page
Compare
What About JSON
データフォーマット比較、辞書型の利点
JSON について
JSON for Modern C++ - Niels Lohmann の nlohmann-json ライブラリを利用しています。
データフォーマット
JSON はファイルの場合 UTF-8 形式で保存されたテキストデータですが、特定のデータ記述形式に沿って内容が書かれています。
JSON の登場以前にもデータ交換用のデータフォーマットとしては CSV や XML がありました。 CSV は仕様が曖昧で統一規格が無くデータの可読性も悪い、XML はマークアップ言語を駆使した記述は統一的で自由度も高い、けれどデータをタグで括る方式は構文解釈に時間がかかりデータ量も多くなるなどの欠点があります。
JSON はまず可読性が高い、無駄な情報が少なくデータ量自体も小さくなる。扱えるデータ型も CSV より多く、文字列、数値、真偽値、null に加えてデータ構造型も配列とオブジェクトが扱えます。
比較
Animal | Sounds | Legs |
---|---|---|
Cat | Meow | 4 |
Dog | Woof | 4 |
Owl | hoo-h’HOO-hoo-hoo | 2 |
上記テーブルを CSV、XML、JSON でそれぞれ記述してみます。
JSON
{
"ANIMAL":["Cat","Dog","Owl"],
"SOUNDS":["Meow","Woof","hoo-h’HOO-hoo-hoo"],
"LEGS": [4,4,2]
}
XML はマークアップ言語なので仕方ない部分もありますが、小さなデータの場合 CSV でも足りるけど JSON は効率的な記述で CSV では表現できなかったデータ構造型についても自然に記述できています。
「動物」、「鳴き声」、「足の数」というキーワードに対して配列型で三種類のデータが入り、
- 動物 = 猫犬梟
- 鳴き声 = ナー,ウー,ホーぅホホぅホーホー(迫真)
- 足の数 = 4,4,2
これを辞書型のデータ構造にパースして C++ で利用できるようにするのが nlohmann/json ライブラリの役割です。