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

sile 715e3288c8 Update README.md 11 лет назад
doc 8861e5429b エンコード処理をCPSで書き直し 11 лет назад
src ff4dee2d87 jsone_encode.erlのspecがコメントアウトしたままになっていたのを修正 11 лет назад
test 8861e5429b エンコード処理をCPSで書き直し 11 лет назад
.gitignore bff1c05ea2 first commit 11 лет назад
COPYING 8cfca951e7 Makefileやrebar.configなどを少し整理 11 лет назад
Makefile 8cfca951e7 Makefileやrebar.configなどを少し整理 11 лет назад
README.md 715e3288c8 Update README.md 11 лет назад
rebar bff1c05ea2 first commit 11 лет назад
rebar.config 6e36665c67 rebar.configにnativeオプションが残ってしまっていたので除去 11 лет назад

README.md

jsone (0.2.1)

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]

使用例

%% デコード
> jsone:decode(<<"[1,2,3]">>).
[1,2,3]

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

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

Erlangの型とJSONの対応

Erlang JSON
number 123 123
null null null
boolean true true
string <<"abc">> "abc"
array [1,2,3] [1,2,3]
object {[{<<"key">>, <<"value">>}]} {"key":"value"}

API

EDOCドキュメント

参考