mirror https://github.com/sile/jsone

Takeru Ohta 60f80046b5 エラー時に例外送出を行わないように変更中 (hipe時でもエラー原因を追えるようにするために) 11 лет назад
doc 236f334685 エンコード処理を最適化 11 лет назад
src 60f80046b5 エラー時に例外送出を行わないように変更中 (hipe時でもエラー原因を追えるようにするために) 11 лет назад
test 60f80046b5 エラー時に例外送出を行わないように変更中 (hipe時でもエラー原因を追えるようにするために) 11 лет назад
.gitignore bff1c05ea2 first commit 11 лет назад
COPYING 8cfca951e7 Makefileやrebar.configなどを少し整理 11 лет назад
Makefile 8cfca951e7 Makefileやrebar.configなどを少し整理 11 лет назад
README.md 8b7749e921 他のJSONライブラリに合わせてオブジェクトの表現形式を{object, []}から{[]}に変更 11 лет назад
rebar bff1c05ea2 first commit 11 лет назад
rebar.config 60f80046b5 エラー時に例外送出を行わないように変更中 (hipe時でもエラー原因を追えるようにするために) 11 лет назад

README.md

jsone (0.2.0)

Erlangで実装されたJSONのエンコード/デコードライブラリ。

特徴

  • RFC4627準拠
  • 日本語を含む文字列に対応
    • ただし文字列はUTF-8のみをサポート
  • Pure Erlang
  • デコード処理部を実験的にCPS的に実装
    • パース途中にサブバイナリが生成されることを極力抑制して最適化
    • NIFを使わない実装の中ではおそらく最速

ビルド方法

ビルドツールにはrebarを使用している。

ビルド手順:

# ビルド
$ 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ドキュメント

使用例

%% デコード
> jsone:decode(<<"[1,2,3]">>).
{[1,2,3],<<>>}                  % 返り値は {デコード結果, 未使用バイナリ} 形式

> json:decode(<<"{\"1\":2}">>).
{{[{<<"1">>,2}]},<<>>}   % オブジェクトは {object, [Key, Value]} 形式にデコードされる

%% エンコード
> jsone:encode([1,2,3]).
<<"[1,2,3]">>

参考