JSONより出来の良い妹 「SION」
今回はSIONというデータシリアライゼーションフォーマット
Wh (at|y) Serialization?
その前にシリアライゼーション
汎用シリアライゼーションフォーマットには大きく分けて2つの目的があります。
- データ交換
(data exchange) - データ可視化
(data visialization)
うち前者に関しては,Storable
,Marshal
,Pickle
といった具合に。これらはいずれもバイナリフォーマット
YAML, XML, and JSON
リスト1にYAMLの例を挙げます。とても直感的で人の手で読み書きするのも楽なので,
リスト1 YAMLの例
array:
- ̃
- true
- 1
- 0x1p+0
- one
-
- 1
-
one: 1.0
bool: true
dictionary:
array: []
bool: false
double: 0.0
int: 0
nil: ̃
object: {}
string:
double: 42.195
int: -42
nil: ̃
string: 漢字,カタカナ,ひらがなの入った"string"😇
url: https://github.com/dankogai/
一時期はXMLがその目的で流行ったことがありました。macOSになる前のMac OS Xでもかつては設定ファイルがXMLでした
リスト2 XMLの例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>array</key>
<array>
<true/>
<integer>1</integer>
<real>1</real>
<string>one</string>
<array>
<integer>1</integer>
</array>
<dict>
<key>one</key>
<real>1</real>
</dict>
</array>
<key>bool</key>
<true/>
<key>date</key>
<real>0.0</real>
<key>dictionary</key>
<dict>
<key>array</key>
<array/>
<key>bool</key>
<false/>
<key>double</key>
<real>0.0</real>
<key>int</key>
<integer>0</integer>
<key>object</key>
<dict/>
<key>string</key>
<string></string>
</dict>
<key>double</key>
<real>42.195</real>
<key>int</key>
<integer>-42</integer>
<key>string</key>
<string>漢字,カタカナ,ひらがなの入った"string"😇</string>
<key>url</key>
<string>https://github.com/dankogai/</string>
</dict>
</plist>
しかしデシリアライズが,