いつもお世話になっています。
現在、rubyonrailsで開発を行っています。
jsonに対して、jsonschemaでバリデーションのチェックを行おうと考えています。
これに関して2点質問をさせていただきたいです。
① arrayを持ったjsonへのvalidation
サイトを参考にし、jsonschemaをかいてみましたが、全てバリデーションがパスしてしまいます。このようなjsonに対して
バリデーションを行いたい場合、jsonschemaはどのようにかけば良いでしょうか?
(参考にしたサイト:http://qiita.com/sagaraya/items/115c15c0df3e84ecbc7f)
② 特定のデータが空欄だった場合に、それ以降のバリデーションを変更するなど、if文のようなことができるか
下記のようなjsonが来た場合に、例えば、flg1とflg2が空欄だった場合には、
それ以降のint1、int2のバリデーションチェックを走らせないようにするようなことは可能でしょうか?
(実際にはデータ数も多いので、余分な処理は走らせたくないという思いがあります。)
そもそも、flg1とflg2が空欄だった場合、のような複数項目を指定したバリデーションチェック自体できるんでしょうか?
知識不足であることは承知の上ですが、ご教示頂ければと思います。
足りないところがあれば補足致しますので、よろしくお願い致します。
json [ { "flg1": 1, "flg2": 1, "int1": 100, "int2": 200, } ], [ { "flg1": 1, "flg2": 1, "int1": "a", "int2": "b", } ], [ { "flg1": "", "flg2": "", "int1": 100, "int2": 200, } ] ...
jsonschema --- $schema: "http://json-schema.org/draft-04/schema#" title: "Json" type: "array" required: - "flg1" - "flg2" - "int1" - "int2" properties: flg1: type: "number" flg2: type: "number" int1: type: "number" int2: type: "number" additionalProperties: false
controller require 'json-schema' require 'yaml' json = File.open('./bookshop.json').read schema = JSON.dump( YAML::load( File.open('./bookshop-schema.yml').read ) ) p JSON::Validator.fully_validate(schema, json, :strict => false)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。