Chihiro Ito氏によって書かれたsimple-json.rbを
ライブラリの形式にして、 APIを変更・拡張し、pretty unparseの機能を追加したもの。
AnJSON::ParserAnJSON::BuilderAnJSON::PrettyBuilderAnJSON.parse(str, opts = {})AnJSON.load(str, opts = {})AnJSON.build(ruby_obj, opts = {})AnJSON.dump(ruby_obj, opts = {})AnJSON.unparse(ruby_obj, opts = {})AnJSON.pretty_build(ruby_obj, opts = {})AnJSON.pretty_dump(ruby_obj, opts = {})AnJSON.pretty_unparse(ruby_obj, opts = {})simple-json.rbと同じく、パブリックドメインです。再配布や改変などに制限はありません。
同梱のsetup.rbを実行してください。(適切な位置にlib/anjson.rbがコピーされます)
% ruby setup.rb
AnJSONモジュールに全てのコードを含めています。
それに伴い、JsonParserはAnJSON::Parserに、JsonBuilderはAnJSON::Builderに、名前と階層を変更しています。
class JsonParser
class JsonBuilder
module AnJSON
class Parser
class Builder
class PrettyBuilder
AnJson = AnJSON
AnJSONのモジュールメソッドにより、ParserやBuilderを生成しなくてもJSON文字列のパース/生成が行えます。
require 'anjson'
AnJSON.parse(str)
AnJSON.build(ruby_obj)
AnJSON::PrettyBuilderにより、整形されたJSON文字列を出力することができます。
AnJSON::ParserJSONパーサを表すクラス。仕様はオリジナルのJsonParserと同じ。
require 'anjson'
parser = AnJSON::Parser.new
parser.parse('{"a": 1, "b": 2, "c": 3}') #=> {'a'=>1, 'b'=>2, 'c'=>3}
AnJSON::BuilderJSON生成器を表すクラス。仕様はオリジナルの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::PrettyBuilderAnJSON::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 への要望、バグ報告、質問などがありましたら、こちらのフォームからお気軽にどうぞ。