ruby.morphball.net

AnJSON (Another JSON)

Chihiro Ito氏によって書かれたsimple-json.rbを ライブラリの形式にして、 APIを変更・拡張し、pretty unparseの機能を追加したもの。

ダウンロード

ライセンス

simple-json.rbと同じく、パブリックドメインです。再配布や改変などに制限はありません。

インストール

同梱のsetup.rbを実行してください。(適切な位置にlib/anjson.rbがコピーされます)

% ruby setup.rb

元のコードからの変更点

モジュール化

AnJSONモジュールに全てのコードを含めています。 それに伴い、JsonParserAnJSON::Parserに、JsonBuilderAnJSON::Builderに、名前と階層を変更しています。

オリジナル(simple-json.rb)

class JsonParser
class JsonBuilder

AnJSON

module AnJSON
    class Parser
    class Builder
    class PrettyBuilder

AnJson = AnJSON

モジュールメソッドの追加

AnJSONのモジュールメソッドにより、ParserBuilderを生成しなくてもJSON文字列のパース/生成が行えます。

require 'anjson'

AnJSON.parse(str)
AnJSON.build(ruby_obj)

pretty build

AnJSON::PrettyBuilderにより、整形されたJSON文字列を出力することができます。

APIリファレンス

AnJSON::Parser

JSONパーサを表すクラス。仕様はオリジナルのJsonParserと同じ。

require 'anjson'

parser = AnJSON::Parser.new
parser.parse('{"a": 1, "b": 2, "c": 3}')  #=> {'a'=>1, 'b'=>2, 'c'=>3}

AnJSON::Builder

JSON生成器を表すクラス。仕様はオリジナルのJsonBuilderと同じ。

require 'anjson'

builder = AnJSON::Builder.new
puts builder.build({'a' => 30, 'b' => 'String Instance', 'c' => [2, 5, 4], 'd' => nil})
{"a":30,"b":"String Instance","c":[2,5,4],"d":null}

AnJSON::PrettyBuilder

AnJSON::Builderのサブクラス。オブジェクトをJSON形式の文字列に変換するとき、 改行とインデントで整形を行う。

オプションとしてindentが追加されており、これを渡すことでインデントに使われる文字列を指定できる。 デフォルトは半角スペース2個。

require 'anjson'

builder = AnJSON::PrettyBuilder.new({:indent => '    '})
puts builder.build({'a' => 30, 'b' => 'String Instance', 'c' => [2, 5, 4], 'd' => nil})
{
    "a": 30,
    "b": "String Instance",
    "c": [
        2,
        5,
        4
    ],
    "d": null
}

AnJSON.parse(str, opts = {})

AnJSON.load(str, opts = {})

AnJSON::Parserを用いてJSON形式の文字列strを解析し、Rubyオブジェクトに変換して返す。

optsはそのままAnJSON::Parserに引き渡される。

AnJSON.build(ruby_obj, opts = {})

AnJSON.dump(ruby_obj, opts = {})

AnJSON.unparse(ruby_obj, opts = {})

AnJSON::Builderを用いて、オブジェクトruby_objをJSON形式の文字列に変換して返す。

optsはそのままAnJSON::Builderに引き渡される。

AnJSON.pretty_build(ruby_obj, opts = {})

AnJSON.pretty_dump(ruby_obj, opts = {})

AnJSON.pretty_unparse(ruby_obj, opts = {})

AnJSON::PrettyBuilderを用いて、オブジェクトruby_objをJSON形式の文字列に変換し、 改行とインデントで整形して返す。

optsはそのままAnJSON::PrettyBuilderに引き渡される。

一言メッセージフォーム

AnJSON への要望、バグ報告、質問などがありましたら、こちらのフォームからお気軽にどうぞ。

連絡先