|
@@ -1 +1,59 @@
|
|
|
-http://www.ietf.org/rfc/rfc4627.txt
|
|
|
+jsone (0.1.0)
|
|
|
+=============
|
|
|
+
|
|
|
+Erlangで実装されたJSONのエンコード/デコードライブラリ。
|
|
|
+
|
|
|
+特徴
|
|
|
+----
|
|
|
+- RFC4627準拠
|
|
|
+- 日本語を含む文字列に対応
|
|
|
+ - ただし文字列はUTF-8のみをサポート
|
|
|
+- Pure Erlang
|
|
|
+- デコード処理部を実験的にCPS的に実装
|
|
|
+ - パース途中にサブバイナリが生成されることを極力抑制して最適化
|
|
|
+
|
|
|
+ビルド方法
|
|
|
+----------
|
|
|
+ビルドツールには[rebar](https://github.com/basho/rebar)を使用している。
|
|
|
+
|
|
|
+ビルド手順:
|
|
|
+```sh
|
|
|
+# ビルド
|
|
|
+$ git clone git://github.com/sile/jsone.git
|
|
|
+$ make init
|
|
|
+
|
|
|
+# テスト & dialyzer 実行
|
|
|
+$ make
|
|
|
+
|
|
|
+# ロードパスに追加してErlangシェルを起動
|
|
|
+$ make start
|
|
|
+1> jsone:decode(<<"[1,2,3]">>).
|
|
|
+[1,2,3]
|
|
|
+```
|
|
|
+
|
|
|
+API
|
|
|
+---
|
|
|
+[EDOCドキュメント](doc/jsone.md)
|
|
|
+
|
|
|
+使用例
|
|
|
+-----
|
|
|
+```erlang
|
|
|
+%% デコード
|
|
|
+> jsone:decode(<<"[1,2,3]">>).
|
|
|
+{[1,2,3],<<>>} % 返り値は {デコード結果, 未使用バイナリ} 形式
|
|
|
+
|
|
|
+> json:decode(<<"{\"1\":2}">>).
|
|
|
+{{object,[{<<"1">>,2}]},<<>>} % オブジェクトは {object, [Key, Value]} 形式にデコードされる
|
|
|
+
|
|
|
+%% エンコード
|
|
|
+> jsone:encode([1,2,3]).
|
|
|
+[91,[[<<"1">>,44,<<"2">>],44,<<"3">>],93] % iodata()が返る
|
|
|
+
|
|
|
+> iolist_to_binary(jsone:encode([1,2,3])).
|
|
|
+<<"[1,2,3]">>
|
|
|
+```
|
|
|
+
|
|
|
+参考
|
|
|
+----
|
|
|
+- [JSON](http://www.json.org/)
|
|
|
+- [RFC4627](http://www.ietf.org/rfc/rfc4627.txt)
|