┣データ1 ┃┣-名前1 ┃┣-32 ┃┗-24 ┃ ┗データ2 ┣-名前2 ┣-33 ┗-25
構造体定義。使い慣れてるせいか最も柔軟なテーブル定義ができる。配列も入れ子も自由自在。
型を定義
typedef struct StData { char name[256]; int num1; int num2; } StData;
データを策定
StData data[]={ {"名前1",32,24}, {"名前2",33,25}, };
データの取り出し
int n = data[0].num1;
<データ名> 値 </データ名>の書式でかける。2回もデータ名を描くのがめんどくさい。可読性にすぐれない。
型定義&データ設定
<data>0 <name>名前1</name> <num1>32</num1> <num2>24</num2> </data> <data>1 <name>名前2</name> <num1>33</num1> <num2>25</num2> </data>1
データ名 :値の書式でかける。配列の場合はデータ名 :{名前:値 , 名前:値 , 名前:値}でかける。XMLに比べてすっきりしている。2回もデータ名を書かなくていいのが良い。
"フォルダ1": { "サブフォルダ1": { "ファイル1": 1(値), "ファイル2": true(値2), }, "サブフォルダ2": { "ファイル1": 2, "ファイル2": false, }, "サブフォルダ3": { "ファイル1": 3, "ファイル2": true, } },
原則構造体の表現はできない。しかしテーブルという概念で数値だろうが、文字だろうが、関数だろうが格納できる仕組みを持つ。しかしその柔軟さゆえに、逆に特定の規則に沿ったフォーマットのデータを扱う時に色々不便。