SIONは Swift Interchangeable Object Notation から取ったと紹介記事で書きましたが、実装が単一言語ではinterchangeableとはとても言えません。というわけでJSの実装を書いたのですが、なんとGoの実装をそれより先にmattnが文字通り一晩で書いてくれちゃいましたよ。
というわけで誕生二日目で早くもinterchangeableになったSIONですが、
- フォーマットの公式ページを実装ページから分離しました。
- https://dankogai.github.io/SION/
- URLダサいので何かとりますかね…
- 前述通り、GoとECMAScriptの実装が加わりました。
どちらもドキュ貧なのですが、ここでは私が書いた方のjs-sionの方を少し解説しておきます。
- ESMですモダンです。いやあ楽ですねえ。
- なのでCORSさえクリアすればこんなことも出来ます。
<html>
<head>
<meta charset="utf-8">
<title>Console</title>
</head>
<body>
<script type="module">
import SION from 'https://cdn.rawgit.com/dankogai/js-sion/master/sion.js';
console.log(SION);
window.SION = SION;
</script>
open sonsole and use SION interactively.
</body>
</html>
- ECMAScript標準の
JSON
オブジェクト同様、.parse()
と.stringify()
が提供されます。 -
Dictionary
はキーが全てString
ならObject
に、そうでない場合はMapにマップしてます。そうなんです。ECMAScriptでも今や文字列でないキーも使えるんですよ。 -
.Data
はUint8Arrayにマップしてます。node.jsとブラウザーでここだけ処理を切り替えています。 - 数値は…
Int
もDouble
もNumber
です。が、.stringify()
ではInt
(で表現可能)なものは10進で、Double
なものは16進で出力するようにしました。
おっと時間もないので今はこの辺で。引き続きSIONをよろしくお願いします。
Dan the Safe, Fast, and Expressive