質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

1877閲覧

ruby on rails jsonschemaを使用したバリデーションで、arrayを扱う方法と、バリデーションの条件分岐について

hiepita1

総合スコア37

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2017/09/21 16:07

いつもお世話になっています。
現在、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)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

itemsを使うことでarrayには対応することができました。

投稿2017/11/27 12:27

hiepita1

総合スコア37

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問