枕を欹てて聴く

香炉峰の雪は簾を撥げて看る

Ruby/jsonschema

今まで, json schemaのvalidation libraryであるjsonschemaPythonJavaScriptのものが用意されていました.

Chromium Extensionのmanifest.jsonのschemaをid:os0xさんがすでに書いていてhttp://gist.github.com/179669(os0x++)それをcrxmakeで利用したいなあと思ったので, jsonschemaをRubyに移植しました.
http://github.com/Constellation/ruby-jsonchema/tree/master

ほとんどロジックはもとのjsonschemaのものです.
jsonschemaのMIT Licenseにあわせ, MIT Licenseで公開しています.

install


gem取得先にgithubを登録していない場合,

gem sources -a http://gems.github.com

として,

sudo gem install Constellation-jsonschema

とすることでinstallできます. 依存libraryはありません.


githubがgem作ってくれなくなったのでgemcutterに移行しました.
gem取得先にgemcutterを登録していない場合,

gem source -a http://gemcutter.org

として

sudo gem install jsonschema

でinstallできます.

usage

README.rdocにもありますが,

require 'rubygems'
require 'jsonschema'
schema = {
  "type" => "object",
   "properties" => {
    "prop01" => {
      "type" => "number",
      "maximum" => 10
    },
    "prop02" => {
      "type" => "integer",
      "maximum" => 20
    }
  }
}
data = {
  "prop01"=> 5,
  "prop02"=> 10
}
JSON::Schema.validate(data, schema)

という風に使えます. 問題がある場合はJSON::Schema::ValueErrorがraiseされます.

また, json libraryを入れている方は,

require 'rubygems'
require 'json'
require 'jsonschema'
schema = File.open("path/to/schema.json", "rb"){|f| JSON.parse(f.read)}
data   = File.open("path/to/data.json",   "rb"){|f| JSON.parse(f.read)}
JSON::Schema.validate(data, schema)

という風にももちろん使えます.

そのほか細かな利用法は, testを見てもらえるといいかもしれません.

Remove all ads