JSON は同じキーの繰り返しでムダが多い
オブジェクトの配列でキーの長さも要素数倍になる
数値データの場合テキストのほとんどがキー文字列
ファイルサイズも不要に増える
csv のような形式にして 1 行目が型定義のヘッダ
ボディ部分に基本 ,
区切りでデータを入れる
b は boolean
値は t/f で表現する
b
t
f
f
==>> [true, false, false]
n は number
n
10
3.1
-30
==>> [10, 3.1, -30]
s は string
s
a
xyz
foo
bar
==>> ["a", "xyz", "foo", "bar"]
オブジェクトの場合はヘッダを {}
で囲む
中身は key:type
で ,
区切り
json と違ってどっちも ""
不要
json を使わない理由は順番に意味があるから
json としてパースすると順が保証されない
ボディ部分は単純に ,
区切り
{a:n,b:n,c:n}
1,2,3
3,4,1
==>> [{a:1, b:2, c:3}, {a:3, b:4, c:1}]
配列の場合は []
で囲む
中身は型定義
1 つだけならその型で配列サイズは任意
,
区切りで 2 つ以上なら型の数がそのまま配列の要素数でそれぞれ指定の型
ボディ部分にも []
が必要
{a:n,b:n,c:[n,s],d:{x:{y:{z:b}}},e:[n],f:s}
1,2,[1,djea],f,[1,2,3,4],xxac
==>> [{a:1, b:2, c:[1,"djea"], d:{x:{y:{z:false}}}, e:[1,2,3,4], f: "xxac"}]
パースを楽にするため #
を使ってエスケープ
# -> ##
, -> #c
\n -> #r
: -> #C
" " -> #s